Maven工程下导入log4j
Maven的核心功能便是合理叙述项目间的依赖关系。
通过pom.xml文件添加依赖,配置jar包,而不用手动去导入jar包,十分便利又易于管理。
当我们需要添加jar包时,首先可以在maven仓库中查询对应的jar包(https://mvnrepository.com/)
找到所需的jar包,点击对应版本:
即可得到maven中pom.xml里依赖配置<dependence>
信息,将该jar包依赖配置到pom.xml中就导入了该jar包:
log4j.properties配置文件
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
配置如下:
log4j.rootLogger = debug,stdout,D,E
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%m%n
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
testLog4j.java
getLogger方法有两种形式:
运行结果:
由于在配置文件中配置了日志的输出文件路径,因此可以查看到输出的日志文件:
关于通用日志工具common logging与log4j?
一个使用common logging的代码案例:
Apache common logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现。log4j是具体的日志实现,真正负责"写"日志的这个功能。
因此,common logging本身不是log,你可以把它看做是一个日志的接口;而log4j是日志的实现。
使用common logging方式实现日志,主要的原因在于可以忽略底层的日志实现,或者说为以后的日志实现库的更换提供透明界面;
你可以考虑下,假设从log4j更换为logback,势必要重写所有原本使用log4j的源代码。而使用common logging的情况下,只需要更换jar包,而不需要对源代码做任何改动。
做日志的时候一般是两者一起用,commons-logging工作原理做接口,log4j做实现,应用起来比单独的使用log4j要简单。
commons-logging工作原理:
- 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则使用其中定义的Log实现类;
- 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类;
- 查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;
- 使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);
- 使用commons-logging自己提供的一个简单的日志实现类SimpleLog;
(以上顺序不保证完全准确,请参考官方文档)
总之,commons-logging总是能找到一个日志实现类,并且尽可能找到一个"最合适"的日志实现类.。
参考:
https://blog.csdn.net/azheng270/article/details/2173430/
https://blog.csdn.net/cloudeagle_bupt/article/details/53000615