【问题标题】:control custom loggers through glassfish + log4j通过 glassfish + log4j 控制自定义记录器
【发布时间】:2014-12-08 22:42:28
【问题描述】:

我有一个使用 log4j 的网络应用程序。我在 /WEB-INF/classes/log4j.properties 文件中配置了一个自定义记录器,如下所示:

log4j.rootLogger=ERROR, CNSL

log4j.appender.CNSL=org.apache.log4j.ConsoleAppender
log4j.appender.CNSL.Target=System.out
log4j.appender.CNSL.layout=org.apache.log4j.PatternLayout
log4j.appender.CNSL.layout.ConversionPattern=%d{HH:mm:ss:SSS} %p %c (%F:%L) - %m%n


log4j.logger.my.app = INFO

日志消息按预期写入 server.log,但我试图找到一种通过 glassfish 服务器控制自定义记录器日志级别的方法。

我尝试通过命令在 glassfish 中创建记录器:

asadmin set-log-level my.app.level=WARNING 

但是,即使 asadmin 命令将记录器设置为 WARNING,仍会记录所有 INFO 消息。有没有办法控制 glassfish 记录器的 log4j.properties 中配置的自定义记录器的记录器级别?

【问题讨论】:

    标签: java logging glassfish log4j slf4j


    【解决方案1】:

    如果您在 Web 应用程序中使用 java.util.logging 作为底层日志框架,则可以通过 Glassfish 中的控制台控制日志级别。

    您还可以在代码中使用SLF4J,并将java.util.logging 用作底层日志记录框架(通过slf4j-jdk14.jar)。

    【讨论】:

    • 我目前正在使用 SLF4J api 和 Log4j。将 slf4j-jdk14.jar 放在类路径中的某个位置是不是很简单?
    • 仅将slf4j-log4j12-version.jar 替换为slf4j-jdk14-version.jar
    • 如果不使用 java.util.logging 作为底层日志框架,则无法更改 Glassfish 中的级别。
    【解决方案2】:

    asadmin set-log-level 命令正在控制 glassfish 日志记录,而您想要控制 log4j 日志记录。更好的选择是使用 JMX Mbean,以便您可以在运行时动态控制日志级别。有fewlinks可以帮忙。

    【讨论】:

    • 那么没有办法从 glassfish 记录器控制应用记录器级别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2020-04-28
    相关资源
    最近更新 更多