firemail
标题: java打印日志 [打印本页]
作者: java 时间: 2018-1-25 11:01
标题: java打印日志
本帖最后由 java 于 2018-1-25 11:12 编辑
Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging。其中log4j和commons-logging都是apache软件基金会的开源项目。这三种方式的区别如下:
Java.util.logging,JDK标准库中的类,是JDK 1.4 版本之后添加的日志记录的功能包。
log4j,最强大的记录日志的方式。可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。
commons-logging,最综合和常见的日志记录方式,是Java中的一个日志接口,一般会与log4j一起使用。自带SimpleLog可用于日志记录。
1.slf4j-log4j12
- <font color="rgb(85, 85, 85)"><font face="""><font style="font-size: 15px"> <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.25</version>
- </dependency>
- </font></font></font>
复制代码
其中api是接口,下面是实现
并把 log4j.properties 放到 resources 目录下- log4j.rootLogger=CONSOLE,FILE
- log4j.addivity.org.apache=true
- # 应用于控制台
- log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
- log4j.appender.CONSOLE.Threshold=DEBUG
- log4j.appender.CONSOLE.Target=System.out
- log4j.appender.CONSOLE.Encoding=UTF-8
- log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
- log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- # 每天新建日志
- log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.A1.File=../logs/testimaplog
- log4j.appender.A1.Encoding=UTF-8
- log4j.appender.A1.Threshold=DEBUG
- log4j.appender.A1.DatePattern='.'yyyy-MM-dd
- log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n
- #应用于文件
- log4j.appender.FILE=org.apache.log4j.FileAppender
- log4j.appender.FILE.File=../logs/testimaplog/log
- log4j.appender.FILE.Append=false
- log4j.appender.FILE.Encoding=UTF-8
- log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
复制代码
作者: java 时间: 2018-1-25 11:13
本帖最后由 java 于 2018-1-25 14:10 编辑
增加下面依赖后- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-mongodb</artifactId>
- <version>1.5.3.RELEASE</version>
- </dependency>
复制代码 报如下错误:
SLF4J: Class path contains multiple SLF4J bindings.
因为它里面使用的是logback,单独配置一下loback的相关配置文件
resources/config/logback.properties- log.path=../logs/imap-api/logs
- log.name=imap.log
- log.name.error=imap-error.log
复制代码 resources/logback.xml- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
- <property resource="config/logback.properties" />
- <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
- <Target>System.out</Target>
- <encoder>
- <pattern>%d [%t] %p %logger - %m%n</pattern>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>DEBUG</level>
- </filter>
- </appender>
- <appender name="LogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <File>${log.path}/${log.name}</File>
- <Append>true</Append>
- <encoder>
- <pattern>%d [%t] %p %logger{0} - %m%n</pattern>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>${log.path}/${log.name}.%d{yyyy-MM-dd}</fileNamePattern>
- </rollingPolicy>
- </appender>
- <appender name="ErrorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <File>${log.path}/${log.name.error}</File>
- <encoder>
- <pattern>%d [%t] %p %logger{0} - %m%n</pattern>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>ERROR</level>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>${log.path}/${log.name.error}.%d{yyyy-MM-dd}</fileNamePattern>
- </rollingPolicy>
- <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
- <providers>
- <mdc/>
- <timestamp/>
- <version/>
- <pattern>
- <pattern>
- {"provider": "test"}
- </pattern>
- </pattern>
- <message/>
- <loggerName/>
- <logLevel/>
- <callerData/>
- <context/>
- <stackTrace/>
- <arguments/>
- <logstashMarkers/>
- </providers>
- </encoder>
- </appender>
- <root level="DEBUG">
- <appender-ref ref="Console"/>
- <appender-ref ref="LogFile"/>
- <appender-ref ref="ErrorFile"/>
- </root>
- </configuration>
复制代码
作者: java 时间: 2019-1-15 11:52
Commons-logging:apache最早提供的日志的门面接口。避免和具体的日志方案直接耦合。类似于JDBC的api接口,具体的的JDBC driver实现由各数据库提供商实现。通过统一接口解耦,不过其内部也实现了一些简单日志方案。
Log4j:经典的一种日志解决方案。内部把日志系统抽象封装成Logger、appender、pattern等实现。我们可以通过配置文件轻松的实现日志系统的管理和多样化配置。
Slf4j: 全称为Simple Logging Facade for JAVA:java简单日志门面。是对不同日志框架提供的一个门面封装。可以在部署的时候不修改任何配置即可接入一种日志实现方案。和commons-loging应该有一样的初衷。
生成spring工程
https://start.spring.io/
新一代日志框架 logback
https://logback.qos.ch/
相关项目
http://commons.apache.org/
统一日志API
slf4j-api
log4j-over-slf4f
jcl-over-slf4j
jul-to-slf4j
都实现 slf4j的接口
Logger logger = LoggerFactory.getLogger(this.getClass());
logger.info("hello"); 接口会自动调用上面框架的日志实现
localhost:8080/loggers 日志管理 修改 application.properties文件中加入 management.security.enabled = false
作者: java 时间: 2019-2-20 16:24
Fluentd是一个用于统一日志层的开源数据收集器。
欢迎光临 firemail (http://firemail.wang:8088/) |
Powered by Discuz! X3 |