Log4j 属性 |为每次运行创建带有时间戳的新日志文件[重复]
Posted
技术标签:
【中文标题】Log4j 属性 |为每次运行创建带有时间戳的新日志文件[重复]【英文标题】:Log4j properties | Create new log file with timestamp for every run [duplicate] 【发布时间】:2017-11-28 22:45:09 【问题描述】:我对 log4j 还是很陌生,并且已经设法为我的代码创建了日志。 但我需要的是,为每次运行创建一个新文件,而不是将日志附加到同一个文件中。
以下是我正在设置的属性(在谷歌某处找到)。 请提出更改建议,以便在每次运行后创建带有时间戳的新文件。
// Here we have defined root logger
log4j.rootLogger=INFO,R,html
// Here we define the appender
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.HTML=org.apache.log4j.FileAppender
// Here we define log file location
log4j.appender.R.File=./Logs/LastRunLog.log
log4j.appender.HTML.File=./Logs/LastRunLog.html
// Here we define the layout and pattern
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d - %c -%p - %m%n
log4j.appender.HTML.layout=org.apache.log4j.HTMLLayout
log4j.appender.HTML.layout.Title=Application log
log4j.appender.HTML.layout.LocationInfo=true
【问题讨论】:
这可以帮助***.com/a/31362055/6743203 或***.com/a/19133787/6743203 【参考方案1】:您可以使用系统属性来设置 log4j 文件名及其值,并为每次运行赋予该属性一个唯一值。
在你的初学者课程上这样的东西(timeInMillis 和一个随机以避免名称冲突):
static
long millis = System.currentTimeMillis();
System.setProperty("log4jFileName", millis+"-"+Math.round(Math.random()*1000));
然后你在 log4j conf 属性中引用系统属性:
log4j.appender.R.File=./Logs/$log4jFileName.log
log4j.appender.HTML.File=./Logs/$log4jFileName.log
希望对你有帮助!
【讨论】:
【参考方案2】:我认为这个答案会对你有所帮助click here
我已经按照页面上的说明运行了代码,每次启动应用程序时都会得到一个新的日志文件。
这样的结果:
我的 Test.java 中的所有代码都是:`
private static final Logger log = Logger.getLogger(Test.class);
public static void main(String[] args)
log.info("Hello World");
`
【讨论】:
您能否在此处提供属性文本,即屏幕截图中显示的文本? 受字符数限制,我这里只显示fileOnReboot属性,如果你想要其他的,我稍后会提供(我认为其他人对你的问题并不重要)log4j.rootLogger=fileOnReboot log4j.appender.fileOnReboot=jian.log4j.NewFileOnRebootAppender log4j.appender.fileOnReboot.File=appLogOnReboot.log log4j.appender.fileOnReboot.layout=org.apache.log4j.PatternLayout log4j.appender.fileOnReboot.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss %-5p %c1:%L - %m%n
【参考方案3】:
您需要编写(或查找)一个自定义附加程序,该附加程序将创建名称中带有时间戳的文件。 log4j 中文件日志记录的 3 个默认实现是:
FileAppender
:一个文件记录,没有大小限制。
RollingFileAppender
: 当前文件达到大小限制时的多个文件和滚动文件
DailyRollingFileAppender
: 每天一个文件
最简单的方法是扩展FileAppender
并覆盖setFile
和getFile
方法。
【讨论】:
在我的情况下扩展 FileAppender 并覆盖 setFile 就足够了。以上是关于Log4j 属性 |为每次运行创建带有时间戳的新日志文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
shell脚本每天创建带有时间戳的文件夹并推送时间戳生成的日志