Log4j日志在java项目中的使用(附工程源码)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

目录(?)[+]

一、关于Log4j日志

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。

此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。

二、Log4j使用前必须要了解的一些概念

2.1、日志信息的优先级

日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。而且在企业中一般也只使用着四种。下面是各个级别的极介绍:

OFF 最高等级,用于关闭所有日志记录。 
FATAL 指出每个严重的错误事件将会导致应用程序的退出。 
ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。 
WARN 表明会出现潜在的错误情形。 
INFO 一般和在粗粒度级别上,强调应用程序的运行全程。 
DEBUG 一般用于细粒度级别上,对调试应用程序非常有帮助。 
ALL 最低等级,用于打开所有日志记录。

2.2、日志信息的输出目的地

日志信息的输出目的地指定了日志将打印到控制台还是文件中。参考如下配置文件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 级别以上的日志到=D://logs/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/debug.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 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://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  

   
   

    其中log4j.appender.D.Threshold是一个过滤器,配置了表示输出该级别及其以上的日志, 
    另外log4j.appender.D.Append = true一般输出到文件的都会配置,而且配置成true,true:表示添加,false:表示覆盖。

    2.3、配置日志信息的格式

    2.2中的log4j.properties配置文件中,应该会看log4j.appender.*.layout,这表示输出的日志格式配置。

    log4j.appender.*.layout值的选择有以下几种:

    org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    
     
     


      一般我们都采用第二种org.apache.log4j.PatternLayout,自定义格式,如2.2中的log4j.properties配置文件中,这种格式需要我们自定义,这里小宝鸽如下定义:

      log4j.appender.*.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
      
       
       


        其中含义介绍:

        %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
        %r 输出自应用启动到输出该log信息耗费的毫秒数
        %c 输出所属的类目,通常就是所在类的全名
        %t 输出产生该日志事件的线程名
        %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
        %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
        %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
        
         
         

          三、Log4j在java中的使用

          本项目使用的环境:eclipse + maven 。

          3.1、新建maven项目

          (Packagding 选war,因为后面会讲到其在web项目中的使用,同样用这个新建的项目),如果不知道如何新建maven项目的,可以参考博主另外一篇文章: 
          http://blog.csdn.net/u013142781/article/details/50316383

          3.2、在pom.xml添加Log4j的jar包依赖:

          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
            <groupId>com.luo</groupId>
            <artifactId>log4j</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <packaging>war</packaging>
          
            <properties>
              <!-- log4j日志文件管理包版本 -->
              <slf4j.version>1.6.6</slf4j.version>
              <log4j.version>1.2.12</log4j.version>
            </properties>
            <dependencies>
              <!-- 日志文件管理包 -->
              <!-- log start -->
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>${log4j.version}</version>
              </dependency>
              <dependency>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-api</artifactId>
                  <version>${slf4j.version}</version>
              </dependency>
              <dependency>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-log4j12</artifactId>
                  <version>${slf4j.version}</version>
              </dependency>
              <!-- log end -->
            </dependencies>
          </project>
          
           
           

            3.3、添加配置文件和测试类

            这里写图片描述

            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 级别以上的日志到=D://logs/debug.log ###
            log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
            log4j.appender.D.File = D://logs/debug.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 级别以上的日志到=D://logs/error.log ###
            log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
            log4j.appender.E.File =D://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 
            
             
             

              LogTest.java内容如下:

              package com.luo.log;
              
              import org.apache.log4j.Logger;
              
              public class LogTest {
              
                  private static Logger logger = Logger.getLogger(LogTest.class);    
              
                  public static void main(String[] args) {      
                      // 记录debug级别的信息    
                      logger.debug("This is debug message.");    
                      // 记录info级别的信息    
                      logger.info("This is info message.");    
                      // 记录error级别的信息    
                      logger.error("This is error message.");   
                  }    
              }
              
              
               
               

                3.4、运行结果

                运行LogTest.java,会看到控制台如下结果:

                这里写图片描述

                另外,D:\logs下也会多了两个log文件,且内容如下图:

                这里写图片描述

                这里写图片描述

                这里写图片描述

                四、Log4j在web项目中的使用

                继续是刚刚的那个工程,这里博主增加了spring + springmvc的配置,虽然spring配置这里是必须的,一般一个springmvc项目里面都会有spring。

                4.1、将它转成web项目

                转换方法,请阅读博主的另外一篇文章: 
                http://blog.csdn.net/u013142781/article/details/50380920

                这里写图片描述

                4.2、添加spring和springmvc以及javaee-api的依赖

                修改pom.xml如下:

                <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
                  <modelVersion>4.0.0</modelVersion>
                  <groupId>com.luo</groupId>
                  <artifactId>log4j</artifactId>
                  <version>0.0.1-SNAPSHOT</version>
                  <packaging>war</packaging>
                
                  <properties>
                    <!-- log4j日志文件管理包版本 -->
                    <slf4j.version>1.6.6</slf4j.version>
                    <log4j.version>1.2.12</log4j.version>
                    <!-- spring版本号 -->
                    <spring.version>3.2.8.RELEASE</spring.version>
                  </properties>
                  <dependencies>
                    <!-- 日志文件管理包 -->
                    <!-- log start -->
                    <dependency>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                        <version>${log4j.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                        <version>${slf4j.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                        <version>${slf4j.version}</version>
                    </dependency>
                    <!-- log end -->
                    <!-- 添加Spring依赖 -->
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context-support</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-tx</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-jdbc</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                        <version>${spring.version}</version>
                    </dependency>
                    <!-- javaee-web-api包 注意和项目使用的JDK版本对应 -->
                    <dependency>
                        <groupId>javax</groupId>
                        <artifactId>javaee-web-api</artifactId>
                        <version>6.0</version>
                        <scope>provided</scope>
                    </dependency>
                    <dependency>
                        <groupId>org.activiti</groupId>
                        <artifactId>activiti-engine</artifactId>
                        <version>5.17.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.googlecode.xmemcached</groupId>
                        <artifactId>xmemcached</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                  </dependencies>
                </project>
                
                 
                 

                  4.3、配置web.xml

                  其实web项目中Log4j的使用与上面的区别就在于,web项目进行了log4j.properties的加载,web项目加上了如下配置:

                  <!-- 日志记录 -->
                      <context-param>
                          <!-- 日志配置文件路径 -->
                          <param-name>log4jConfigLocation</param-name>
                          <param-value>classpath:log4j.properties</param-value>
                      </context-param>
                      <context-param>
                          <!-- 日志页面的刷新间隔 -->
                          <param-name>log4jRefreshInterval</param-name>
                          <param-value>6000</param-value>
                      </context-param>
                  
                      <listener>
                          <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
                      </listener>
                  
                   
                   

                    配置文件web.xml的全部内容如下:

                    <?xml version="1.0" encoding="UTF-8"?>
                    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                        id="WebApp_ID" version="2.5">
                    
                        <!-- 读取spring配置文件 -->
                        <context-param>
                            <param-name>contextConfigLocation</param-name>
                            <param-value>classpath:application.xml</param-value>
                        </context-param>
                        <!-- 设计路径变量值 -->
                        <context-param>
                            <param-name>webAppRootKey</param-name>
                            <param-value>springmvc.root</param-value>
                        </context-param>
                    
                        <listener>
                            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                        </listener>
                    
                        <!-- 日志记录 -->
                        <context-param>
                            <!-- 日志配置文件路径 -->
                            <param-name>log4jConfigLocation</param-name>
                            <param-value>classpath:log4j.properties</param-value>
                        </context-param>
                        <context-param>
                            <!-- 日志页面的刷新间隔 -->
                            <param-name>log4jRefreshInterval</param-name>
                            <param-value>6000</param-value>
                        </context-param>
                    
                        <listener>
                            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
                        </listener>
                    
                        <!-- springMVC核心配置 -->
                        <servlet>
                            <servlet-name>dispatcherServlet</servlet-name>
                            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                            <init-param>
                                <param-name>contextConfigLocation</param-name>
                                <!--spingMVC的配置路径  -->
                                <param-value>classpath:springmvc/spring-mvc.xml</param-value>
                            </init-param>
                            <load-on-startup>1</load-on-startup>
                        </servlet>
                    
                        <!-- 拦截设置 -->
                        <servlet-mapping>
                            <servlet-name>dispatcherSe
                            rvlet</servlet-name>
                            <url-pattern>/</url-pattern>
                        </servlet-mapping>
                    
                    </web-app>
                    
                     
                     

                      4.4、配置其他文件如下目录

                      这里写图片描述

                      UserController.java内容如下:

                      package com.luo.controller;
                      
                      import org.apache.log4j.Logger;
                      import org.springframework.stereotype.Controller;
                      import org.springframework.web.bind.annotation.RequestMapping;
                      import org.springframework.web.servlet.ModelAndView;
                      
                      @Controller  
                      public class UserController {  
                      
                          private static Logger logger = Logger.getLogger(UserController.class); 
                      
                          @RequestMapping("/")    
                          public ModelAndView getIndex(){     
                              // 记录debug级别的信息    
                              logger.debug("This is debug message.");    
                              // 记录info级别的信息    
                              logger.info("This is info message.");    
                              // 记录error级别的信息    
                              logger.error("This is error message.");   
                      
                              ModelAndView mav = new ModelAndView("index");   
                              return mav;    
                          }    
                      
                      }  
                      
                       
                       

                        spring-mvc.xml内容如下:

                        <?xml version="1.0" encoding="UTF-8"?>
                        <beans xmlns="http://www.springframework.org/schema/beans"
                          xmlns:p="http://www.springframework.org/schema/p"
                          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                          xmlns:context="http://www.springframework.org/schema/context"
                          xmlns:mvc="http://www.springframework.org/schema/mvc"
                          xsi:schemaLocation="
                            http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context-3.2.xsd
                            http://www.springframework.org/schema/mvc
                            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
                        
                             <mvc:annotation-driven /> 
                             <!-- 扫描controller(controller层注入) -->
                             <context:component-scan base-package="com.luo.controller">  </context:component-scan>
                        
                             <!-- 对模型视图添加前后缀 -->
                             <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
                              p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
                        
                        </beans>
                        
                         
                         

                          application.xml内容如下:

                          <?xml version="1.0" encoding="UTF-8"?>
                          <beans xmlns="http://www.springframework.org/schema/beans"
                            xmlns:p="http://www.springframework.org/schema/p"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                            xmlns:context="http://www.springframework.org/schema/context"
                            xmlns:mvc="http://www.springframework.org/schema/mvc"
                            xsi:schemaLocation="
                              http://www.springframework.org/schema/beans
                              http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                              http://www.springframework.org/schema/context
                              http://www.springframework.org/schema/context/spring-context-3.2.xsd
                              http://www.springframework.org/schema/mvc
                              http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
                          
                               <mvc:annotation-driven /> 
                               <!-- 扫描controller(controller层注入) -->
                               <context:component-scan base-package="com.luo.controller">  </context:component-scan>
                          
                               <!-- 对模型视图添加前后缀 -->
                               <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
                                p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
                          
                          </beans>
                          
                           
                           

                            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 级别以上的日志到=D://logs/debug.log ###
                            log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
                            log4j.appender.D.File = D://logs/debug.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 级别以上的日志到=D://logs/error.log ###
                            log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
                            log4j.appender.E.File =D://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 
                            
                             
                             

                              index.jsp内容乳如下:

                              <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
                              <html>
                              <body>
                              <h2>Hello World!</h2>
                              </body>
                              </html>
                              
                               
                               


                                4.5、运行结果

                                用运行web项目log4j,访问:http://localhost:8080/log4j/,会看到eclipse的控制台和log文件的日志:

                                这里写图片描述

                                这里写图片描述

                                这里写图片描述

                                五、源码下载

                                http://download.csdn.net/detail/u013142781/9378146



                                相关实践学习
                                日志服务之使用Nginx模式采集日志
                                本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
                                相关文章
                                |
                                3月前
                                |
                                XML 安全 Java
                                【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
                                本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
                                927 31
                                【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
                                |
                                2月前
                                |
                                监控 安全 Apache
                                什么是Apache日志?为什么Apache日志分析很重要?
                                Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
                                |
                                9天前
                                |
                                存储 SQL 关系型数据库
                                MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
                                MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
                                MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
                                |
                                4月前
                                |
                                XML JSON Java
                                Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
                                【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
                                464 3
                                |
                                1月前
                                |
                                SQL 关系型数据库 MySQL
                                MySQL事务日志-Undo Log工作原理分析
                                事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
                                MySQL事务日志-Undo Log工作原理分析
                                |
                                2月前
                                |
                                人工智能 监控 算法
                                3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
                                3D-Speaker是阿里巴巴通义实验室推出的多模态说话人识别开源项目,结合声学、语义和视觉信息,提供高精度的说话人识别和语种识别功能。项目包含工业级模型、训练和推理代码,以及大规模多设备、多距离、多方言的数据集,适用于多种应用场景。
                                428 18
                                3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
                                |
                                2月前
                                |
                                Java Maven
                                java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
                                在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
                                645 8
                                java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
                                |
                                2月前
                                |
                                存储 监控 安全
                                什么是事件日志管理系统?事件日志管理系统有哪些用处?
                                事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
                                114 2
                                |
                                3月前
                                |
                                JSON Java 数据库
                                SpringBoot项目使用AOP及自定义注解保存操作日志
                                SpringBoot项目使用AOP及自定义注解保存操作日志
                                76 1
                                |
                                3月前
                                |
                                存储 监控 安全
                                什么是日志管理,如何进行日志管理?
                                日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
                                334 0