Java:日志输出JDK Logging、commons-logging、log4j、SLF4J、Logback

举报
彭世瑜 发表于 2021/08/14 00:23:23 2021/08/14
2.2k+ 0 0
【摘要】 目录 使用 JDK Logging使用 commons-logging使用 log4jSLF4J和Logback 使用 JDK Logging package com.demo; import java.util.logging.Logger; public class Main { public static void main(String[...

使用 JDK Logging

package com.demo;

import java.util.logging.Logger;

public class Main { public static void main(String[] args) { Logger logger = Logger.getLogger(Main.class.getName()); logger.info("info"); }
}

  
 

输出

八月 06, 2020 5:39:42 下午 com.demo.Main main
信息: info

  
 

使用 commons-logging

依赖

<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version>
</dependency>

  
 

示例

package com.demo;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Main { public static void main(String[] args) { Log log = LogFactory.getLog(Main.class); log.info("info"); }
}
  
 

使用 log4j

关系:

  • Commons Logging 日志接口
  • Log4j 日志实现

依赖

<!--commons-logging-->
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version>
</dependency>

<!--log4j-->
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.13.3</version>
</dependency>

<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.13.3</version>
</dependency>

<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jcl</artifactId> <version>2.13.3</version>
</dependency>

  
 

日志配置 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration> <Properties> <!-- 定义日志格式 --> <Property name="log.pattern">%d{MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}%n%msg%n%n</Property> <!-- 定义文件名变量 --> <Property name="file.err.filename">log/err.log</Property> <Property name="file.err.pattern">log/err.%i.log.gz</Property> </Properties> <!-- 定义Appender,即目的地 --> <Appenders> <!-- 定义输出到屏幕 --> <Console name="console" target="SYSTEM_OUT"> <!-- 日志格式引用上面定义的log.pattern --> <PatternLayout pattern="${log.pattern}" /> </Console> <!-- 定义输出到文件,文件名引用上面定义的file.err.filename --> <RollingFile name="err" bufferedIO="true" fileName="${file.err.filename}" filePattern="${file.err.pattern}"> <PatternLayout pattern="${log.pattern}" /> <Policies> <!-- 根据文件大小自动切割日志 --> <SizeBasedTriggeringPolicy size="1 MB" /> </Policies> <!-- 保留最近10份 --> <DefaultRolloverStrategy max="10" /> </RollingFile> </Appenders> <Loggers> <Root level="info"> <!-- 对info级别的日志,输出到console --> <AppenderRef ref="console" level="info" /> <!-- 对error级别的日志,输出到err,即上面定义的RollingFile --> <AppenderRef ref="err" level="error" /> </Root> </Loggers>
</Configuration>

  
 

使用示例

package com.demo;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Main { public static void main(String[] args) { Log log = LogFactory.getLog(Main.class); log.info("info"); log.error("error"); }
}
  
 

SLF4J和Logback

关系

  • SLF4J 日志接口
  • Logback 日志的实现

Simple Logging Facade for Java (SLF4J)

依赖

<!--logback-->
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version>
</dependency>

<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version>
</dependency>

<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version>
</dependency>

  
 

配置文件logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <file>log/output.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>log/output.log.%i</fileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>1MB</MaxFileSize> </triggeringPolicy> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root>
</configuration>

  
 

示例

package com.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main { public static void main(String[] args) { Logger log = LoggerFactory.getLogger(Main.class); log.info("info"); log.error("error"); }
}
  
 

参考
https://www.liaoxuefeng.com/wiki/1252599548343744/1264738568571776

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/107846592

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。