Log4j很容易通过类名来命名,这可以在每个类初始化的时候完成Logger 的初始化,Logger 的名称就等于类的完整路径,这是一个定义Logger的简单有效的方式。当为日志文件输出具有 Logger名称的日志时,这种命名策略可以很容易看出一个日志消息的来源。当然这只是一种比较常见的日志命名方式,log4j并没有对此进行限制,开发人员可以按照需求进行命名。
因为使用类名命名 Logger是一个习惯用法。一个便利的方法是使用
LogManager.getLogger() 来获取类的全路径名称的 Logger。
目前为止,使用类名来作为Logger 的名称是最好的方式。
6. LoggerConfig
当Logger对象在logging configuration 中被定义时, LoggerConfig对象同时被创建。LoggerConfig 包含一组Filters 来过滤传递到Appenders 的LogEvent 。LoggerConfig使用一组Appenders 用来处理这些事件。
Log Levels
LoggerConfigs 被分配一个日志级别,包括: TRACE, DEBUG, INFO, WARN, ERROR, FATAL。Log4j 2 也支持自定义日志级别,另一种获得更多日志粒度的方式是使用 Markers。
Log4j1 与logback都有日志级别继承的概念。在Log4j2中,因为 Loggers 和LoggerConfigs是2个不同的对象,所以这个概念的实现有所不同。但是因为每个Loggers
都关联一个相应的LoggerConfig,所以最终效果是相同的。
如果一个 root LoggerConfig没有配置日志级别,将分配一个默认级别。 Logger Name Assigned LoggerConfig LoggerConfig Level Logger Level root root DEBUG DEBUG X root DEBUG DEBUG X.Y root DEBUG DEBUG X.Y.Z root Example 1 在 Example1中, 仅配置了root logger与其日志级别,所有的Loggers都会引用 root LoggerConfig ,并使用其日志级别。 Logger Name Assigned LoggerConfig LoggerConfig Level Level root root DEBUG DEBUG X X ERROR ERROR X.Y X.Y INFO INFO X.Y.Z X.Y.Z WARN WARN Example 2 在Example2中, 每个Logger 都有其对应的LoggerConfig 和相应的日志级别。 Logger Name Assigned LoggerConfig LoggerConfig Level Level root root DEBUG DEBUG X X ERROR ERROR X.Y X ERROR ERROR X.Y.Z X.Y.Z WARN WARN Example 3 在 Example3中,Loggerroot, X 和X.Y.Z 都有与名称完全匹配的LoggerConfig 配置,而 LoggerX.Y没有与其命名匹配的 LoggerConfig ,所以使用拥有最长匹配度的 X的LoggerConfig 。 Logger Name Assigned LoggerConfig LoggerConfig Level level root root DEBUG DEBUG X X ERROR ERROR X.Y X ERROR ERROR X.Y.Z X ERROR ERROR Example 4 Example 4中,root 与X各自有一个与名称完全匹配的LoggerConfig ,而X.Y 与X.Y.Z没有与名称完全匹配的LoggerConfig ,所以使用与其名称有最长匹配度的X 的LoggerConfig 。 Logger Name Assigned LoggerConfig LoggerConfig Level level root root DEBUG DEBUG X X ERROR ERROR X.Y X.Y INFO INFO X.YZ X ERROR ERROR Example 5 Example 5中root.X, 与X.Y 有与名字完全匹配的LoggerConfig ,而 X.YZ 将与X 相匹配而不是X.Y,因为路径匹配时按照 .进行分割和匹配的。
Logger Name Assigned LoggerConfig LoggerConfig Level Level root root DEBUG DEBUG X X ERROR ERROR X.Y X.Y ERROR X.Y.Z X.Y ERROR Example 6 Example 6中,X.Y 与X.Y.Z都没有配置相应的日志级别,所以他们从 Logger X中继承了日志级别。
下面的表格展示了logEvent(垂直方向)与 LoggerConfig(水平方向)的过滤方式:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库log4j2使用手册@zhangsf(2)在线全文阅读。
相关推荐: