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

标签 java logging logback

这是部署到 JBoss 上的“ war ”。它公开了具有多种功能的 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");
    }
}

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

关于java - 独立管理每个 WebService 方法的日志记录级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37140188/

相关文章:

java - 不能从静态上下文中引用非静态方法(虽然已经创建了非静态方法)?

linux - python 记录器,唯一的错误是写

c# - 如何获取静态类注入(inject)的ILogger?

jboss - Logback + Wildfly 8 - 不正确的模式

scala - 每 x 天滚动一次的 logback filenamepattern

java - Spring下如何配置Logback

java - GlazedLists AutoCompleteSupport 和搜索自定义对象

java - urlConnection.getInputStream() 抛出 EOFException

java - java中的联合typedef

linux - 记录在单独进程中运行的脚本的输出