Slf4j日志记录器的模式

3

我正在使用Spring Boot的默认日志模式获取日志。

2017-02-10 15:39:01.111  INFO 24483 --- [ryBean_Worker-1] c.f.dashboard.services.SchedulerService  : Hello World!

我希望以这种格式获取日志。
2017/02/10 11:24:37,771 [INFO] [http-nio-8080-exec-8] myMethod(myClass.java:38) - Hello World!

我尝试使用了这个模式

%sn %d{yyyy/MM/dd HH:mm:ss,SSS} %r [%-5p] [%t] %M(%F:%L) - %m%n

但在日志行中出现了解析错误。

%PARSER_ERROR[sn] 2017/02/10 09:41:25 12018 [INFO ] [schedulerFactoryBean_Worker-1] %PARSER_ERROR[M] - Hello World!

我认为这个模式是正确的,代码中可能还存在其他问题。请参考以下URL:http://log4jtester.com/?p=%25sn+%25d%7Byyyy%2FMM%2Fdd+HH%3Amm%3Ass%2CSSS%7D+%25r+%5B%25-5p%5D+%5B%25t%5D+%25M(%25F%3A%25L)+-+%25m%25n - Jayesh
1个回答

8
请将以下内容添加到您的 application.xml 文件中。
logging.pattern.console=%d{"yyyy/MM/dd HH:mm:ss,SSS"} [%p] [%t] %M\\(%F:%L\\) - %msg%n

或者在application.yml文件中

logging:
  pattern:
    console: '%d{"yyyy/MM/dd HH:mm:ss,SSS"} [%p] [%t] %M\(%F:%L\) - %msg%n'

对于日期模式,逗号“,”字符被解释为参数分隔符,模式 HH:mm:ss,SSS 将被解释为模式 HM:mm:ss 和时区 SSS。如果您希望在日期模式中包含逗号,则只需将模式括在引号中。例如 %date{"HH:mm:ss,SSS"}。

对于方法模式,如果您需要将圆括号字符视为文字,需要在每个圆括号前加上反斜杠进行转义。否则,您将获得解析器错误。

其余内容均自说明。


2017/02/10 16:48:44,287 [INFO] [main] logStarting(StartupInfoLogger.java:48\2017/02/10 16:48:44,295 [DEBUG] [main] logStarting(StartupInfoLogger.java:51\2017/02/10 16:48:44,295 [INFO] [main] logStartupProfileInfo(SpringApplication.java:637\2017/02/10 16:48:48,209 [INFO] [main] log(DirectJDKLog.java:179\2017/02/10 16:48:48,211 [INFO] [main] log(DirectJDKLog.java:179\2017/02/10 - Pardha.Saradhi
我在yml文件中使用它作为模式: console: '%d{"yyyy/MM/dd HH:mm:ss,SSS"} [%p] [%t] %M\(%F:%L\) - %msg%n' - Pardha.Saradhi
谢谢,它起作用了。你能解释一下你改了什么吗?我之前使用过类似的代码,但没有换行。 - Pardha.Saradhi
1
application.xml需要两个反斜杠,而application.yml只需要一个反斜杠作为方法模式。可能你错过了这样的细节。 - Monzurul Shimul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接