之前的章节介绍了log4j的核心组件,本章将会通过配置文件介绍一下核心组建的配置。

  主要在配置文件中配置log4j的日志级别,定义appender、layout等。

  log4j.properties是log4j的配置文件,它采用键值对的方式定义。

  默认情况下,logManager对象会在CLASSPATH目录下寻找log4j.properties

先看看基本的配置模板

# Define the root logger with appender X
log4j.rootLogger = DEBUG, X
# Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender
# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n

  看看这个配置文件都做了什么:

  • 首先日志的级别是DEBUG,另外还添加来一个appender,名字是X。
  • 设置appender的名字是X,并且定义该appender的实现为org.apache.log4j.FileAppender,即文件读写方式
  • 为X设置显示的方式——layout

真实样例

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

  上面的配置文件又做了什么呢?

  • 日志的root级别为DEBUG,DEBUG的appender名字是FILE。
  • 设置FILE的实现为org.apache.log4j.FileAppender,它会把日志信息写入日志目录中叫log.out的文件。
  • layout的格式定义为%m%n,意思是每条日志都会跟随一个换行符。

  需要注意的是log4j支持UNIX风格的变量引用,比如${variableName}

Appenders

  log4j提供了多种的Appender对象,用于输出日志消息到不同的目的地,比如控制台,文件,系统事件日志等等。每个appender对象都有不同的配置属性,这些属性定义来对象的行为。

  • layout    appender使用这个layout对象转换日志信息的格式
  • target    目标可能是控制台、文件、也可能依赖于其他的appender
  • level    用于设定过滤日志的级别
  • threshhold    appender可以设置阈值,与日志的级别有关。日志会忽略掉所有低于该级别的日志
  • filter    过滤器对象能够分析日志信息,然后决定日志请求由某个appender处理还是丢掉

  可以通过下面的方式,给logger添加appender

log4j.logger.[logger-name]=level, appender1,appender..n

  当然如果在XML也可以通过下面的方式:

<logger name="com.apress.logging.log4j" additivity="false">
<appender-ref ref="appender1"/>
<appender-ref ref="appender2"/>
</logger>

  如果想在程序中添加appender,则可以调用下面的方法:

public void addAppender(Appender appender);

  这个addAppender()方法向logger对象中添加appender。

  像例子中展示的,它可以同时配置多个appender,每个日志都会独立的发送不到不同的目的地

  上面只展示来FileAppender的用法,log4j还有下面的appender以供使用:

  • AppenderSkeleton
  • AysncAppender
  • ConsoleAppender
  • DailyRollingFileAppender
  • ExternallyRolledFileAppender
  • FileAppender
  • JDBCAppender
  • JMSAppender
  • LF5Appender
  • NTEventLogAppender
  • NullAppender
  • RollingFileAppender
  • SMTPAppender
  • SocketAppender
  • SocketHubAppender
  • SyslogAppender
  • TelnetAppender
  • WriterAppender

layout

  上面使用过PatternLayout,下面还有其他的选项:

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

  不同的appenders和layout用法,后续会慢慢更新。

最新文章

  1. Hive安装配置指北(含Hive Metastore详解)
  2. 一样的alert代码,样式不同
  3. &lt;&lt;软件测试实战&gt;&gt;读书笔记
  4. 开启 mysql 远程访问
  5. Windows 自动关机/定时关机 命令 shuntdown
  6. 机器人操作系统(ROS)教程4:ROS的框架【转】
  7. BZOJ 3159决战
  8. 在EF的code frist下写稳健的权限管理系统:MVC过滤拦截,权限核心(五)
  9. XML解析技术研究(一)
  10. Error:/bin/bash: /bin/java: No such file or directory
  11. Conexant声卡实现内录功能(win7)
  12. 【JS】布尔逻辑
  13. ThinkPHP中:多个项目共享同一个session问题
  14. Android5.0特性ToolBar
  15. 探索Antlr(Antlr 3.0更新版)
  16. node.js学习二---------------------同步API和异步API的区别
  17. 寒假作业pta1
  18. Java相关问题整理
  19. 【产品设计】【转】APP界面设计规范编写指南(人人都是产品经理)
  20. [cocos2d-x]移动平台游戏开发(图)

热门文章

  1. 未能加载文件或程序集“System.Web.Http, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)解决办法
  2. JoinQuant策略代码示例
  3. 【Django】Django开发中的日志输出
  4. Docker学习笔记--2 镜像的创建
  5. dynamic routing between captual
  6. 判断Datable是否有数据
  7. php同一个用户同时只能登陆一个, 后登陆者踢掉前登陆者(排他登陆)
  8. MySQL 时间戳与日期互相转换
  9. 菜鸟学Linux - 文件/文件夹的隐藏属性
  10. Kali 网络配置