spring 集成log4j和sl4j以及简单使用
2020-03-08 12:38
1026 查看
log4j 与sl4j 的不同与相同点
SLF4J不同于其他日志类库,与其它日志类库有很大的不同。SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志类库。如果是在编写供内外部都可以使用的API或者通用类库,那么你真不会希望使用你类库的客户端必须使用你选择的日志类库。 如果一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active MQ使用了SLF4J,你可以继续使用你的日志类库而无需忍受加载和维护一个新的日志框架的痛苦。 总的来说,SLF4J使你的代码独立于任意一个特定的日志API,这是对于API开发者的很好的思想。虽然抽象日志类库的思想已经不是新鲜的事物,而且Apache commons logging也已经在使用这种思想了,但SLF4J正迅速成为Java世界的日志标准。让我们再看几个使用SLF4J而不是log4j、logback或者java.util.logging的理由。
日志级别
每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为: A:off 最高等级,用于关闭所有日志记录。 B:fatal 指出每个严重的错误事件将会导致应用程序的退出。 C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。 D:warm 表明会出现潜在的错误情形。 E:info 一般和在粗粒度级别上,强调应用程序的运行全程。 F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。 G:all 最低等级,用于打开所有日志记录。
logger只会输出日志级别大于等于配置级别的日志
maven导入依赖
<!-- log4j dependency --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- slf4j dependency --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency>
配置web.xml
<!-- 配置 Log4j --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:config/log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>
这里的重点是确认log4j配置文件所在位置
常用配置
log4j.rootLogger = [ level ] , myAppenderName, myAppenderName, … 作用:配置根logger的日志最低级别以及appender level : 最低日志级别 myAppenderName: 自定义的appender名字
log4j.appender.myAppenderName= option 作用:配置自定义appender的类型 myAppenderName: 自定义的appender名字 option: org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j.appender.myAppenderName.Target=option 作用:指定输出控制台 myAppenderName: 自定义的appender名字 option: System.err,System.out(默认情况)
log4j.appender.myAppenderName.layout=option 作用:配置日志布局方式 option: 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局), 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.myAppenderName.File=myFilePath 作用:配置日志文件输出位置
log4j.appender.myAppenderName.layout.ConversionPattern= myExpression 作用:配置日志输出格式的表达式
log4j.appender.myAppenderName.Threshold= level 作用:限制本appender只能输出这个日志级别的日志(这和配置最低日志级别是不同的这样对日志级别范围更加明确!!!)
为单独的包配置logger
log4j.包路径 = [ level ] , myAppenderName, myAppenderName, …
我的配置
log4j.rootLogger=debug,stdout,logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=aa.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
使用方式
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PlainTest { private static final Logger LOGGER = LoggerFactory.getLogger(PlainTest.class); public static void main(String[] args) throws IOException, InterruptedException { LOGGER.debug("线程开始"); } }
参考文章(更多高级使用方法在这里)
https://blog.csdn.net/m0_37337849/article/details/83213637
https://www.cnblogs.com/qlqwjy/p/9275415.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- MongoDB的使用学习之(五)Spring集成MongoDB以及简单的CRUD
- memcached的简单使用以及spring的集成
- Log4j的使用和怎么在spring中集成log4j 【转】
- Mongodb安装、简单使用及与spring的集成
- log4j的配置以及简单使用
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
- Spring 配置log4j和简单介绍Log4J的使用
- Spring笔记(一)---myeclipse2014配置spring以及简单使用
- Spring定时任务的实现方式--ScheduledExecutorService and ScheduledExecutorFactoryBean的简单源码解析以及使用
- shiro简单使用及其集成spring
- 使用buffalo集成spring写的一个简单的登录子模块
- Spring 配置log4j和简单介绍Log4J的使用
- 在Spring上集成使用ehcache缓存框架以及实现集群缓存同步
- jersey的简单介绍及与spring-boot的集成使用
- SpringMVC集成Swagger插件以及Swagger注解的简单使用
- java内存工具VisualVM的简单使用以及与Idea集成
- Spring集成JSF的最简单方式是使用DelegatingVariableResolver类
- java内存工具VisualVM的简单使用以及与Idea集成
- Quartz资源及与Spring集成简单使用举例
- Spring 配置log4j和简单介绍Log4J的使用