Netbeans若有所思地洒上Logger.getLogger(this.getClass()。getName())。log(Level。[...] 对catch块的语句。现在我想将它们全部指向文件(和控制台)。
每个日志教程,只有我这样说明如何让特定的记录器输出到文件中,但我认为有一种比修复每个自动生成的日志记录语句更好的方法吗?为某种根记录器设置处理程序?
答案 0 :(得分:39)
我只是在启动时添加以下内容
Handler handler = new FileHandler("test.log", LOG_SIZE, LOG_ROTATION_COUNT);
Logger.getLogger("").addHandler(handler);
您可以为LOG_SIZE
和LOG_ROTATION_COUNT
您可能需要调整日志记录级别以适应。
答案 1 :(得分:2)
您必须在记录器配置文件中定义日志的写入位置。 例如,如果使用log4j,则log4j.xml(或log4j.properties)文件将包含此类信息。
例如,这是一个简单的log4j.xml文件,它直接记录到文件(my-app.log)和控制台中:
<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="rolling" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="my-app.log" />
<param name="DatePattern" value=".yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [IP=%X{ipAddress}] [user=%X{user}] %m%n" />
</layout>
</appender>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [user=%X{user}] %m%n" />
</layout>
</appender>
<root>
<priority value="info" />
<appender-ref ref="console" />
<appender-ref ref="rolling" />
</root>
</log4j:configuration>