Dan*_*tte 10 java slf4j log4j2
我有这些具体要求:
现在,这是我的实现:
final Logger logger = LoggerFactory.getLogger(HelloWorld.class);
final Marker marker = MarkerFactory.getMarker("FATAL");
logger.error(marker, "!!! Fatal World !!!");
Run Code Online (Sandbox Code Playgroud)
这是我的PatternLayout (在yaml中):
PatternLayout:
Pattern: "%d{ISO8601_BASIC} %-5level %marker [%t] %logger{3.} - %msg%n"
Run Code Online (Sandbox Code Playgroud)
这是我的日志输出:
20150506T155705,158 ERROR FATAL [main] - !!! Fatal World !!!
Run Code Online (Sandbox Code Playgroud)
您是否知道如何有效地从日志输出中删除"错误"?
非常感谢你
Marker这不是你想要的.Marker用于"丰富"日志消息,使其更容易搜索.您正在尝试更改日志级别/优先级,这有点不同.
您正在使用logger.error()哪个会将消息记录为ERROR级别.
如果没有FATAL预定义的级别(通常有,例如logger.fatal()),则使用logger.log()允许您指定日志级别的泛型.
logger.fatal(yourMessage);
Run Code Online (Sandbox Code Playgroud)
要么
logger.log(priorityLevel, yourMessage);
Run Code Online (Sandbox Code Playgroud)
来自SLF4J网站:
标记接口是org.slf4j包的一部分,它使FATAL级别在很大程度上是多余的.如果给定的错误需要注意超出为普通错误分配的错误,只需使用特殊指定的标记标记日志记录语句,该标记可以命名为"致命"或任何其他您喜欢的名称.
http://www.slf4j.org/faq.html#fatal
因此,使用SLF4J,不可能具有FATAL日志级别.我强烈反对这一决定背后的理由,但事实就是如此.
这是我与一些同事一起提出的最接近的解决方案:
这是Java示例:
Marker fatal = MarkerFactory.getMarker("FATAL");
// Usage example
final Logger logger = LoggerFactory.getLogger(FatalLogger.class);
logger.log(fatal, "this is a fatal message");
// Log sample :
20150514T115144,279 FATAL [main] FatalLogger - this is a fatal message
Run Code Online (Sandbox Code Playgroud)
这是YAML样本:
Configuration:
status: debug
Appenders:
RandomAccessFile:
- name: APPLICATION_APPENDER
fileName: logs/application.log
PatternLayout:
Pattern: "%d{ISO8601_BASIC} %-5level %msg%n"
- name: FATAL_APPENDER
fileName: logs/application.log
PatternLayout:
Pattern: "%d{ISO8601_BASIC} FATAL %msg%n"
Routing:
name: ROUTING_APPENDER
Routes:
pattern: "$${marker:}"
Route:
- key: FATAL
ref: FATAL_APPENDER
- ref: APPLICATION_APPENDER #DefaultRoute
Loggers:
Root:
level: trace
AppenderRef:
- ref: ROUTING_APPENDER
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15203 次 |
| 最近记录: |