我的应用程序使用了许多库,并且我正在使用它来java.util.logging
进行日志记录。我希望能够通过执行以下操作为每个库设置不同的日志记录级别:
org.datanucleus.*.level = WARNING
com.google.apphosting.*.level = WARNING
com.myapp.*.level = FINE
有可能吗?
我的应用程序使用了许多库,并且我正在使用它来java.util.logging
进行日志记录。我希望能够通过执行以下操作为每个库设置不同的日志记录级别:
org.datanucleus.*.level = WARNING
com.google.apphosting.*.level = WARNING
com.myapp.*.level = FINE
有可能吗?
你不应该使用“*”。一个示例 logging.properties 可以是:
handlers=java.util.logging.ConsoleHandler
.level=ALL
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
org.datanucleus.level=WARNING
org.datanucleus.handler=java.util.logging.ConsoleHandler
com.myapp.level=FINE
com.myapp.handler=java.util.logging.ConsoleHandler
如果所有“组织”级别都应记录为警告,那么
org.level=WARNING
org.handler=java.util.logging.ConsoleHandler
我能够让它像这样工作:
handlers= java.util.logging.ConsoleHandler
.level= INFO
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
com.myapp.level = ALL
com.myapp.handler=java.util.logging.ConsoleHandler
只使用以下命令来控制日志记录会很好logging.properties
:
org = FINE
com = SEVERE
不幸的是,相应的日志必须已经实际创建。更改您的 conf 文件对您不起作用。自己添加记录器,它将起作用:
private static final Logger ORG_ROOT_LOGGER = Logger.getLogger("org");
private static final Logger COM_ROOT_LOGGER = Logger.getLogger("com");
应用程序中的嵌套记录器的工作方式相同:
# perhaps in the main entry point for your application?
private static final Logger APP_ROOT_LOGGER = Logger.getLogger("com.myapp");
# in each package or class you want to have separately controlled loggers
private static final Logger LOG = Logger.getLogger(HelloWorldApp.class.getName());
# in logging.properties
com.myapp.level = FINE # sufficient to make all your loggers log as FINE
com.myapp.HelloWorldApp.level = SEVERE # turn off msgs from that particularly chatty app