package log;
import org.apache.log4j.Logger;
public class Log4j {
//在property文件中注释用#
//【Log4j核心组成】
//Logger 主要完成日志信息的处理,可以设置级别等
//Appender 设置日志信息的去向,可以输出到控制台,文件,数据库
//Layout设置日志信息的输出样式,包含信息的行号,时间等
private static Logger logger = Logger.getLogger(Log4j.class);//静态
public static void main(String[] args) {
// 【1】级别依次增高(8种级别)
//all<trace<debug<info<warn<error<fatal<off如果在配置文件中设置了级别为
// debug则此三行都输出,如果设置的级别为info,则只输出后两条
// 说明只能输出高于等于当前级别的信息才能输出
/*【2】配置文件
* log4j.rootLogger=debug级别,appender1
* log4j.appender.appender1=org.apache.log4j.ConsoleAppender输出类型:控制台
* log4j.appender.appender1=org.apache.log4j.FileAppender输出类型:文件格式
* 【***】
* log4j.appender.appender1.File=C:/testlog4.log 输出的文件位置
* log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout信息输出的样式
* 【3】如果要想以html格式输出可以设置
* * log4j.appender.appender1.File=C:/testlog4.html 输出位置
* log4j.appender.appender1.layout=org.apache.log4j.HtmlLayout输出的样式
* 【4】将程序再次运行发现原来的文件并没有被覆盖,而是附加到了原来的信息后面
* 【5】可以同时在控制台输出和文件中保存,需要如下设置
* log4j.rootLogger=debug,appender1,appender2(需要增加一个参数appender2)
log4j.appender.appender2=org.apache.log4j.ConsoleAppender
log4j.appender.appender1=org.apache.log4j.FileAppender
log4j.appender.appender1.File=C:/testlog4.html
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout(SimpleLayout)
* 【6】Appender常用的有以下几个
* org.apache.log4j.ConsoleAppender(控制台)
* org.apache.log4j.FileAppender(文件)
* org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
* org.apache.log4j.RollingFileAppender(文件大小到达制定的尺寸产生一个新的的文件)
* org.apache.log4j.WriterAppender(将日志讯息以流的格式发送到任意制定的地方)
* org.apache.log4j.JdbcAppender(将日志讯息保存到数据库中)
* 【7】log4j提供的layout有以下几种
* org.apache.log4j.HTMLLayout(以html表格的形式布局)
* org.apache.log4j.SimpleLayout(包含日志讯息的级别和讯息字符串)
* org.apache.log4j.TTCCLayout(包含日志产生的时间,执行绪,类别等等信息)
* org.apache.log4j.PatternLayout(可以灵活的制定布局模式)
*
* 【7-1】PatternLayout的定制
* %p输出优先级
* %r输出自应用启动到输出该日志讯息所耗费的毫秒数
* %t输出产生日志事件的线程数
* %f输出日志讯息所属的类别的类别名
* %c输出日志讯息所属的类的全名
* %d输出日志时间点的日期或时间,制定格式的的方式:%d{yyyy-MM-dd HH:mm:ss}
* %l输出日志事件的发生位置,即输出日志讯息的语句处于它所在的类别的第几行
* %m输出代码中制定的讯息,如log(message)中的message
* %n输出一个换行符号
*例子:
*log4j.rootLogger=debug,appender1,appender2
*log4j.appender.appender2=org.apache.log4j.ConsoleAppender
*log4j.appender.appender1=org.apache.log4j.FileAppender
*log4j.appender.appender1.File=C:/testlog4.html
*log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
*log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
*log4j.appender.appender2.layout.ConversionPattern=%r %p %m %d{yyyy-MM-dd HH:mm:ss} %n
*
* 【8】RootLogger
* log4j.rootLogger=[level级别],appender1...appendern
*
* 【9】可以为不同的包下的类指定log
* log4j.rootLogger=debug,appender1(默认)
* log4j.logger.log1(包名)=info,appender2(可以理解为自定义,分别运行可看到效果)
*
* log4j.appender.appender1=org.apache.log4j.ConsoleAppender
* log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
*
*
* log4j.appender.appender2=org.apache.log4j.FileAppender
* log4j.appender.appender2.File=C:/testlog4.log
* log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout
* 【10】也可以用xml文件的形式此时应该把原来的文件修改或重命名在此重命名为 log4j.properties.bak,然后添加一个xml文件
* <?xml version="1.0" encoding="UTF-8"?>
* <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
* <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
* <appender name="appender1" class="org.apache.log4j.RollingFileAppender">(文件大小到达制定的尺寸产生一个新的的文件)
* <param name="File" value="logfile.html" />(文件名)
* <param name="MaxFileSize" value="1MB" />(大小为1mb,超过1mb将转向下一个文件)
* <param name="MaxBackupIndex" value="5"/>(表示有5个备份文件)
* <layout class="org.apache.log4j.HTMLLayout"/>(输出形式)
* </appender>
* <root>
* <priority value="debug"/>(级别)
* <appender-ref ref="appender1"/>
* </root>
* </log4j:configuration>
*
*
*/
logger.debug("this is debug message");
logger.info("this is info message");
logger.error("this is error message");
}
}