独立管理每个WebService方法的日志记录级别



这是部署在JBoss上的一场"战争"。它公开了一个具有多个功能的SOAP web服务。

我们如何让func1()INFO级别登录,而funk2()以不同级别(如DEBUG)登录?级别应该影响线程中从函数开始到函数结束的所有内容。

日志记录级别现在通过JBoss web控制台"按包"进行管理。在我的情况下,运行时也需要类似的配置。

Java,Spring 4,JBoss EAP 6.4.x,logback 1.1.3

一般来说,如果你想为不同的方法使用不同的记录器级别,那么将方法放在不同的类中可能会不那么令人困惑,然后你可以使用记录器的"传统"方法将每个类设置为你想要的级别。

但是,如果你想在一个不同级别的类日志中有多个函数,你需要为它们使用不同的记录器。虽然标准方法是每个类一个记录器(记录器以类命名),但如果您需要不同的设置,则只需要多个记录器(具有不同的名称)。

试试这样的东西:

public class MyClass {
    private static final Logger func1logger = LoggerFactory.getLogger("test.example.MyClass.func1");
    private static final Logger func2logger = LoggerFactory.getLogger("test.example.MyClass.func2");
    public void func1() {
        func1logger.debug("func1 log");
    }
    public void func2() {
        func2logger.debug("func2 log");
    }
}

然后,您应该能够独立设置两个记录器的日志记录级别。也就是说,虽然标准约定是记录器的名称与类的名称完全相同,但这只是一个(有用的!)约定,但如果您的需求不同,则不需要完全遵循它。

最新更新