簡體   English   中英

如何僅對特定行禁用log4j時間戳

[英]how to disable a log4j timestamp for only particular lines

我在log4j.properties文件中配置了日志記錄,我得到了類似這樣的輸出

2013-11-12 19:33:17,897  - INFO Starting queue dispatching for DaphneStore Queue:  om.fi
2013-11-12 19:33:17,897  - INFO Starting CBR queue dispatching for DaphneStore
2013-11-12 19:33:17,897  - INFO Starting server shutdown

我是否有可能在某些行的左側沒有獲得時間戳信息,像這樣

2013-11-12 19:33:17,897  - INFO Starting queue dispatching for DaphneStore Queue: 
Starting CBR queue dispatching for DaphneStore
Starting server shutdown

這是我的log4j配置

# Set root logger to output only ERROR and FATAL events to R appender
log4j.rootLogger=ERROR, R

# Define R appender to output to local log
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.file=D:/logs/abc.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %-5p %c - %m%n

幾個快速的解決方案:

  • 使用ConversionPattern =%m%n創建一個不同的附加程序 (這只會打印記錄器文本,而沒有我認為的時間戳)。
  • 使用ConversionPattern =%m%n修改exisitng附加程序。 在這里,您可以根據需要在記錄器文本中手動添加時間戳 (使用DateFormat,如SimpleDateFormat)。 在其他情況下,純文本將被添加到記錄器文件中而沒有時間戳。

您可能未正確使用log4j。 每次對log.info/error/...()調用都被視為單獨的日志消息。

您可能想做的是這樣的:

final StringBuilder logmsg = new StringBuilder();
logmsg.append("Starting queue dispatching for DaphneStore Queue: \n");
logmsg.append("Starting CBR queue dispatching for DaphneStore\n");
logmsg.append("Starting server shutdown\n");

log.info(logmsg);

更新

我的意思是,時間戳是日志消息的重要組成部分,它表示發生了什么事情。 如果您始終不需要此信息, 可能應該完全丟失時間戳記,並通過一個日志記錄調用來標記應用程序的啟動時間:

String moment = (new SimpleDateFormat("yyyy-MM-dd ...")).format(new Date());
log.info(moment + " Application started");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM