Spring中使用Log4j记录日志

以下内容引用自http://wiki.jikexueyuan.com/project/spring/logging-with-log4j.html

例子:

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.jsoft.testspring</groupId>
    <artifactId>testlog4juse</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>testlog4juse</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring Core -->
        <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.4.RELEASE</version>
        </dependency>

        <!-- Spring Context -->
        <!-- http://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.4.RELEASE</version>
        </dependency>

        <!-- Log4j -->
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.1</version>
        </dependency>

    </dependencies>
</project>

HelloWorld.java:

package com.jsoft.testspring.testlog4juse;

public class HelloWorld {
    private String message;

    public void setMessage(String message) {
        this.message = message;
    }

    public void getMessage() {
        System.out.println("Your Message : " + message);
    }
}

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置参考:http://blog.csdn.net/seven_zhao/article/details/42124131 -->
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration status="OFF">
     <!-- 定义下面的引用名 -->
     <Properties>
          <property name="log_pattern">%d{yyyy-MM-ddHH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n</property>
          <property name="basePath">c:/</property>
          <property name="file_name">${basePath}/applog/app.log</property>
          <property name="rolling_file_name">${basePath}/applog/app-%d{yyyy-MM-dd}-%i.log.gz</property>

          <property name="every_file_size">10M</property><!-- 日志切割的最小单位 -->
          <property name="output_log_level">debug</property><!-- 日志输出级别 -->
     </Properties>

    <!--先定义所有的appender-->
    <appenders>
       <!--这个输出控制台的配置-->
       <Console name="Console" target="SYSTEM_OUT">
           <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
           <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
           <!--这个都知道是输出日志的格式-->
           <PatternLayout pattern="${log_pattern}"/>
       </Console>

       <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
       <!-- 按月生成归档日志,可以使用filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"-->
       <RollingFile name="RollingFile" fileName="${file_name}" filePattern="${rolling_file_name}">
           <PatternLayout pattern="${log_pattern}"/>
           <SizeBasedTriggeringPolicy size="${every_file_size}"/>
       </RollingFile>

       <!--如果需要配置多个Rollingfile地址,还需要在root下添加appender-ref ref="RollingFile1"/>
        <RollingFile name="RollingFile1" fileName="logs/app1.log" filePattern="logs/app1-%d{yyyy-MM-dd}-%i.log.gz">
           <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z}%-5level %class{36} %L %M - %msg%xEx%n"/>
           <SizeBasedTriggeringPolicy size="10MB"/>
        </RollingFile>
        -->
    </appenders>
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
       <!--建立一个默认的root的logger,需要在root的level中指定输出的级别,-->
       <root level="${output_log_level}">
           <appender-ref ref="RollingFile"/>
           <appender-ref ref="Console"/>
       </root>

    </loggers>
</configuration>

beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="helloWorld" class="com.jsoft.testspring.testlog4juse.HelloWorld">
        <property name="message" value="Hello World!" />
    </bean>

</beans>

App.java:

package com.jsoft.testspring.testlog4juse;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Hello world!
 *
 */
public class App {
    static Logger log = (Logger) LogManager.getLogger(App.class.getName());
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
        log.info("Going to create HelloWord Obj");
        HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
        obj.getMessage();
        log.info("Exiting the program");
    }
}

测试结果:

测试工程:https://github.com/easonjim/5_java_example/tree/master/springtest/test20/testlog4juse

时间: 2024-11-05 16:23:27

Spring中使用Log4j记录日志的相关文章

玩转Spring MVC(五)----在spring中整合log4j

在前边的基础上,本文主要总结一下如何在spring 中配置log4j,在本文末尾会给出完整项目的链接. 首先是web.xml中要新添加的代码: <!-- 6. 配置log4j --> <!--6.1 配置加载log4j.xml文件路径 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/spring

Spring中配置log4j的方法

Spring中使用log4j的方便之处 1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下.2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径.3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path. web.xml中的设定 在web.xml中的详细设定如下: <context-param> <param-name>

在Spring项目中使用Log4j记录日志

(1)引入log4j的jar包: 官网下载地址:http://logging.apache.org/log4j/1.2/download.html (2)在web.xml中添加log4j配置: 1 2 3 4 5 6 7 8 <context-param>     <param-name>log4jConfigLocation</param-name>     <param-value>classpath:log4j.properties</param

项目中记录log4j记录日志

1. 导入如上 log下的对应jar包 2. 在src下新建log4j.properties文件,类容如(详细配置:http://www.cnblogs.com/suman/archive/2010/10/23/1858864.html ) 3.编写代码 import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Log log = LogFactory.getLog( this .ge

spring中log4j的使用---转载

原文链接:http://www.codeceo.com/article/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包. 一.入门实例 1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下 2.src同级创建并设置log4j.properties ### 设

在Spring的项目中配置Log4j存放日志文件到指定目录下

在Spring中使用LOG4J为日志输出的插件已有一段日子了,但有时候发现日志文件虽然是已经在根据自己的理想存放了,但还会有些莫名其妙的项目日志文件出现tomcat内(因为项目的日志文件都以项目命名嘛,所以比较容易区分这些log).这些令我纠结的日志文件,让我在改善一下LOG4J的配置.才发现,之前用的配置方式真是弱爆了. 1.先说自己比较理想的存放日志路径. 我比较喜欢把日志文件放在项目的WEB-INF下,然后当然有个文件夹叫logs.logs相信很多人都会存在在这样的目录下,但放在WEB-I

利用spring中的Log4jConfigListener配置log4j

1.编辑好log4j的配置文件,可以为xml也可以是properties. 2.在web.xml中分别配置context-param标签和spring中log4j配置监听器,如下:

【Spring】Spring在JavaWeb工程中整合log4j

在<[Spring]Spring3.0.5的下载.配置与Helloworld>(点击打开链接)一文各位已经可能看到了.如果Spring不整合log4j直接启动,则会出现如下关于Spring整合log4j的警告.这个挺烦人的,一方面自己提倡高内聚,低耦合,另一方面,自己没有整合log4j就提出警告.我们程序猿写出来的程序就叫做"耦合",它Spring就叫做"整合".好吧!你只能同时搞明白,log4j是个什么鬼东西,Spring怎么整合log4j,两个问题:

Log4j配置文件位置+Spring中数据源配置文件位置

一.Log4j配置文件位置 1.自动加载 应用程序启动时,默认情况下会到src目录下寻找log4j.xml配置文件,若不存在,会继续寻找log4j.properties文件,只要找到其中一个就会加载该配置文件内容. 2.手动加载 如果将log4j.properties(或log4j.xml)放到其它目录下,比如下图中的位置,应用程序就不能自动加载log4j的配置文件了,因为应用程序找不到该配置文件,你需要手动加载. 需要在应用程序启动的代码中加入如下的代码: //加载config文件夹下的log