日志框架:slf4j-log4j12

日志框架:slf4j-log4j12单独的 slf4j log4j12 第一步 加入 Maven 依赖 dependency groupId org slf4j groupId artifactId slf4j log4j12 artifactId version 1 7 28 version dependency

slf4j

Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的Slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger等。

因为slf4j只是规定了一堆实现了日志的接口,并不关心日志怎么实现,这样就可以让项目脱离对日志框架的依赖。

使用slf4j的优势:

  • 解耦客户端
      Slf4j只是一种接口,它本身并不关心你底层使用的是什么日志实现方案,所以它支持各种日志实现方案。简单的说,只要我们在类库中使用Slf4j打日志,那么底层使用什么日志实现方案是使用者决定的,怎么决定?依靠配置文件和jar库。

  • 提高效率
      Slf4j打印日志使用了{}占位符,这样就不会有字符串拼接操作,减少了无用ring对象的数量,节省了内存,也提高了时间效率,同时编码更加方便。

Slf4j有四个级别的log level可供选择,级别从上到下由低到高,优先级高的将被打印出来。

  • Debug
    简单来说,对程序调试有利的信息都可以debug输出

  • info
    对用户有用的信息

  • warn
    可能会导致错误的信息

  • error
    顾名思义,发生错误的地方

单独的 slf4j-log4j12

  • 第一步:加入Maven依赖
    <dependency> <groupId>org.slf4j 
           groupId> <artifactId>slf4j-log4j12 
            artifactId> <version>1.7.28 
             version>  
              dependency> 
  • 第二步:在类路径下写log4j.properties
     设置 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%n%m%n 输出DEBUG 级别以上的日志到=E://logs/error.log 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 输出ERROR 级别以上的日志到=E://logs/error.log 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 
  • 第三步:测试代码
    import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DemoTest { 
          private static final Logger logger = LoggerFactory.getLogger(DemoTest.class); public static void main(String[] args) { 
          logger.info("带参日志测试:{}", "参数111"); String key ="k1"; try { 
          System.out.println(3/0); } catch (Exception e) { 
          log.error("strSet(): {} error: {}",key ,e.getMessage()); } } } 

slf4j-log4j12结合Lombok做日志

lombok的@log注解可以生成log对象,用于记录日志,可以通过topic属性来设置getLogger(String name)方法的参数 例如 @Log4j(topic = “com.xxx.entity.User”),默认是类的全限定名,即 类名.class,log支持以下几种:

  • @Log java.util.logging.Logger
  • @Log4j org.apache.log4j.Logger
  • @Log4j2 org.apache.logging.log4j.Logger
  • @Slf4j org.slf4j.Logger
  • @XSlf4j org.slf4j.ext.XLogger
  • @CommonsLog org.apache.commons.logging.Log
  • @JBossLog org.jboss.logging.Logger

示例:

  • 第一步:导入Maven依赖
     <dependency> <groupId>org.slf4j 
           groupId> <artifactId>slf4j-log4j12 
            artifactId> <version>1.7.28 
             version>  
              dependency> <dependency> <groupId>org.projectlombok 
               groupId> <artifactId>lombok 
                artifactId> <version>1.18.10 
                 version>  
                  dependency> 
  • 第二步:在类路径下写log4j.properties
     设置 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%n%m%n 输出DEBUG 级别以上的日志到=E://logs/error.log 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 输出ERROR 级别以上的日志到=E://logs/error.log 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 
  • 第三步:测试代码
@Slf4j public class DemoTest { 
    public static void main(String[] args) { 
    String testInfo = "Free flying flowers are like dreams"; log.info("The test info is :{}", testInfo); } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226415.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午10:57
下一篇 2026年3月16日 下午10:57


相关推荐

  • wpscan无法更新数据库的解决方案

    wpscan无法更新数据库的解决方案今天想学一下 wpscan 日个站 结果发现一只卡在了这一步 忙活了一小时总算弄出来了 updatedb 先更新一下系统的索引 locatewpscan 定位到 wpscan 的目录这个大概就是我们想要的文件了 vim var lib gems 2 5 0 gems wpscan 3 5 4 lib wpscan db updater rb 把这个改成自己放文件的目录再下载这个包

    2026年3月16日
    2
  • TraceView总结

    TraceView总结

    2021年12月14日
    156
  • 腾讯混元T1快速推理+DeepSeek接入,效果炸裂

    腾讯混元T1快速推理+DeepSeek接入,效果炸裂

    2026年3月13日
    3
  • 微信小程序发送消息推送_小程序推送消息设置

    微信小程序发送消息推送_小程序推送消息设置在小程序开发中,如果想实现:用户发给小程序的消息以及开发者需要的事件推送,在小程序项目中,我们想要实现这样一个功能,比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服功能,这个时候微信提供了消息推送功能,在小程序后台的设置,开发设置中,消息推送功能:点击开启消息推送功能,认证成功进入到消息推送配置界面:这里配置几个参数注意一下:URL(服务器………

    2022年10月7日
    6
  • C语言system的用法「建议收藏」

    C语言system的用法「建议收藏」C语言system的用法system()在头文件stdlib.h中system()是C语言中为了调用windows系统命令来设置。例:system(“cls”);//清屏system(“pause”);//暂停system(“title名字”);//设置窗口名system(“time/T”);//显示当前时间system(“data/T”);//显示当前日期system(“…

    2026年1月17日
    5
  • html div自动换行代码,css自动换行_css

    html div自动换行代码,css自动换行_css自动换行 word break break all 和 word wrap break wordword break break all 和 word wrap break word 都是能使其容器如 DIV 的内容自动换行 它们的区别就在于 1 word break break all 例如 div 宽 200px 它的内容就会到 200px 自动换行 如果该行末端有个英文单词很长 congratulati 等 它

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号