log4j 依赖
<!-- log4j 依赖导入-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>bundle</type>
</dependency>
<!-- maven 中添加 bundle 类型的依赖包需要添加 bundle 插件-->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
</plugin>
log4j 配置
名称与路径
// 配置文件名称
log4j.properties
// 配置文件路径
手动在 java/resources下创建
日志的输出的目的地
| 形式 |
描述 |
| org.apache.log4j.ConsoleAppender |
控制台 |
| org.apache.log4j.FileAppender |
文件 |
| org.apache.log4j.DailyRollingFileAppender |
每天产生一个日志文件 |
| org.apache.log4j.RollingFileAppender |
文件大小到达指定尺寸的时候产生一个新的文件 |
| org.apache.log4j.WriterAppender |
将日志信息以流格式发送到任意指定的地方 |
Layout:日志输出格式
| 形式 |
描述 |
| org.apache.log4j.HTMLLayout |
以HTML表格形式布局 |
| org.apache.log4j.PatternLayout |
可以灵活地指定布局模式 |
| org.apache.log4j.SimpleLayout |
包含日志信息的级别和信息字符串 |
| org.apache.log4j.TTCCLayout |
包含日志产生的时间、线程、类别等等信息 |
格式化日志信息
| 形式 |
描述 |
| %d |
输出日志时间点的日期或时间,可以在其后指定格式,比如:%d |
| %t |
输出产生该日志事件的线程名 |
| %p |
优先级 DEBUG/INFO/ERROR |
| %c |
所属类的全名(包括包名) |
| %l |
发生的位置,在某个类的某行 |
| %m |
输出代码中指定的讯息,如 log( message ) 中的 message |
| %n |
输出一个换行符号 |
示例
### 设置 ###
log4j.rootLogger = debug,stdout,fileAppender
### 输出信息到控制抬 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.ImmediateFlush = true
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %t %5p %c{1}:%L - %m%n
### 输出DEBUG 级别以上的日志到=D:/log4j-log.log ###
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.ImmediateFlush = true
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.Encoding=UTF8
log4j.appender.fileAppender.Threshold = DEBUG
log4j.appender.fileAppender.File=D:/log4j-log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n
# 替换格式
# log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d %t method:%l%n%m%n
# log4j.appender.stdout.layout.ConversionPattern=[%-5p]-[%d{yy/MM/dd HH:mm:ss:SSS}]-%l:%m%n
log4j 应用
import org.apache.log4j.Logger;
public class Demo {
private static Logger log = Logger.getLogger(Demo.class);
public static void main(String[] args) {
log.debug("debug...");
log.error("error...");
}
}
log4j 疑难
问题
// 过程中可能出现下面的问题
og4j:WARN No appenders could be found for logger (java.lang.Class).
log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
解决方案
public class Hello {
private static Logger log = Logger.getLogger(Hello.class.getClass());
public static void main(String[] args) {
//获取当前项目的根目录
String relativelyPath=System.getProperty("user.dir");
PropertyConfigurator.configure(relativelyPath + "\\src\\main\\resources\\log4j.properties");
log.debug("debug...");
log.error("error...");
}
}