Java日志系统-- Log4j
1、Log4J
最早的java日志框架 是由Apache 基金会发起的, 提供灵活强大的日志记录机制
JDK1.4 loggingFramework/
2、Log4J 的应用:
主要的三个组件:
1.Logger (记录器)
2.Appenders 输出源
3.Layouts 布局
说明:
1. 记录器 表示的是日志输出级别
2. 输出源 表示的是日志要输出的地方
3. 布局 表示日志以何种形式输出
3、Log4J 三个核心概念
公共类: Logger 负责处理日志记录的大部分操作
公共接口: Appenders 负责控制日志记录的输出
公共抽象类 Layout 负责格式化Appender 的输出
4、三大组件的详细介绍
1). Logger 日志记录器
五个级别:
DEGUG INFO WARN ERROR FATAL
五个级别的顺序:
DEBUG < INFO < WARN <ERROR< FATAL
注: Log4J 有一个规则:
显示比定义级别高的日志
Eg.
如果定义为info 级别, 如果日志级别是error warn 的 那么是可以显示的 但是
Debug 是不能显示的
2).Appenders 控制日志级别的输出位置
Log4J 日志系统, 允许吧日志输到不同的地方,如控制台(console) 文件(Files) 根据天数或者大小产生新的文件,以流的形式发送到其他地方等
语法表示:
Org.apache.log4j.consoleAppender(控制台)
Org.apache.log4j.FileAppender(文件)
Org.apache.log4j.DailyRollingFileApender (每天产生一个日志文件)
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${sys.backup}/sign7662/sign7662.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
Org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件)
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>300MB</MaxFileSize>
</triggeringPolicy>
Org.apache.log4jwriterAppender (将日志以流格式发送到指定的地方
SMTAppender 发送邮件
SocketAppender 远程日志服务器
loggingEvent 对象
配置时方式为:
Log4j.appender.appenderName = fully.qualified.name
Log4j.appender.appenderName.option1 = value1;
....
Log4j.appender.appenderName.optionN = valueN;
Layout: 格式化输出日志信息
Appender 必须使用一个与之相关联的layOut ,这样才能知道怎样格式年华输出日志信息
Log4j具有三种类型的Layout:
1. HTMLLayout
格式化日志输出为HTML表格
PatternLayout
根据指定的转换模式格式化日志输出
SimpleLayout
以一种非常简单的方式格式化日志输出
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss} |+| %msg%n</Pattern> </layout>
使用配置文件配置Log4j
Log4j.xml 配置文件
Log4j.properties 配置文件
Log4j.properties 文件 再第一次调用到Log4J 时, 这个配置文件可以告诉LOg4j 以什么样的格式,什么样的信息,输出到什么地方。
Layouts
有时用户希望根据自己的喜好,格式化自己的日志输出,Log4j可以在Appenders的后面附加Layouts 来完成这个功能:
<appender name="sign7662" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<OnMismatch>ACCEPT</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
<Encoding>GBK</Encoding>
<File>${sys.base}/sign/sign7662.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${sys.backup}/sign7662/sign7662.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d [%thread] %-5level %logger{80} - %msg%n</Pattern>
</layout>
</appender>
Log4j 基本编程方法
1.建立Logger实例
语法显示:
Public static Logger getLogger(String name)
实际上使用
Static Logger logger = Logger.getLogger();
2.读取配置文件
获得Logger的实例后,结下了配置Log4j 使用环境:
语法表示:
BasicConfigurator.configure();
自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure(StringConfigFile);
读取java 特性编写的配置文件
DomConfigurator.configure(StringFileName): 读取Xml形式的配置文件
3.完成上面步骤之后, 下面按照日志级别的不同插入日志
Logger.debug(ObjectMessage);
Logger.info(ObjectMessage);
Logger.warn(ObjectMessage);
Logger.error(ObjectMessage);
Logger.fatal(ObjectMessage);
4.Log4j配置文件
在实际编程时, 要使Log4j真正在系统中运行事先要对配置文件进行定义, 步骤就是对Logger.Appender与Layout的分别使用。
Log4j采用类似C语言中的Printf 函数的打印格式化日志信息。
// log4j
String log4jConfigFile = configPath + File.separatorChar + LOG_CONFIG_FILE;
logger = Loggerx.getLogger("console");
logger.info(log4jConfigFile);
Configurator.initialize(null, log4jConfigFile);
先初始化 log4j 再 logger 打印日志