默认情况下如何将java Logger输出到文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/751736/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get java Logger output to file by default
提问by Bloodboiler
Netbeans thoughtfully sprinkles Logger.getLogger(this.getClass().getName()).log(Level. [...] statements into catch blocks. Now I would like to point them all to a file (and to console).
Netbeans 深思熟虑地将 Logger.getLogger(this.getClass().getName()).log(Level. [...] 语句放入 catch 块中。现在我想将它们全部指向一个文件(和控制台)。
Every logging tutorial and such only me tells how to get a specific logger to output into a file, but I assume there is a better way than fixing every automatically generated logging statement? Setting a handler for some sort of root logger or something?
每个日志教程和只有我这样的人告诉如何让特定的记录器输出到文件中,但我认为有比修复每个自动生成的日志语句更好的方法?为某种根记录器或其他东西设置处理程序?
采纳答案by Miles D
I just add the following at startup
我只是在启动时添加以下内容
Handler handler = new FileHandler("test.log", LOG_SIZE, LOG_ROTATION_COUNT);
Logger.getLogger("").addHandler(handler);
You can specify your own values for LOG_SIZE
and LOG_ROTATION_COUNT
您可以为LOG_SIZE
和指定自己的值LOG_ROTATION_COUNT
You may need adjust the logging level to suit.
您可能需要调整日志记录级别以适应。
回答by Romain Linsolas
You have to define where the log is writting in the logger configuration file. For example, if you use log4j, a log4j.xml (or log4j.properties) file will contain such information.
您必须在记录器配置文件中定义日志的写入位置。例如,如果您使用 log4j,log4j.xml(或 log4j.properties)文件将包含此类信息。
For example, here is a simple log4j.xml file that logs directly into a file (my-app.log) and in the console:
例如,这是一个简单的 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>