`
gubest_1
  • 浏览: 1206 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

log4j的使用

阅读更多
log4j的使用



包为log4j-1.2.15.jar



具体的类如下
package com.land.common.utils.log;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.helpers.Loader;

/**
* 提供日志输出功能类(使用Log4j)
*==================================================================
* @author 顾邹阳
* @Date 2009-7-2上午08:51:38
* @comments:
*==================================================================
*/
public final class LogUtil {
//定义重庆网通输出日志文件的名称
public static final String FILE_LAND_LOG = "land_log.log";//要输出的一般日志名
    //定义iBaties输出日志文件的名称
public static final String FILE_IBATIES_LOG = "ibaties3.log";//要输出的ibaties文件名

// 定义SQL输出日志文件的名称
public static final String FILE_SQL_LOG = "land_sql.log";//要输出的sql文件名
    //定义struts2输出日志文件的名称
public static final String FILE_STRUTS_LOG = "struts2.log";//要输出的struts2日志名



//定义输出日志文件的目录
public static final String FOLDER_LOG = "logs" + File.separatorChar;

private LogUtil() {
//构造器为私有,不允许客户创建此对象(通过getLog方法获取)
}//end of constructor

//初始化类( 初始Log4j )
    static {
    //查找log4j配置文件
    URL url = Loader.getResource( "land_log4j.properties" ); //这是是配制文件的名称,//放在SRC下或CLASSES下
        try {
if( url != null ) {
                //实现地址重新编码(防止中文字符变成乱码'%xx')
String systemEncoding = ( new OutputStreamWriter( new ByteArrayOutputStream() ) ).getEncoding();
String urlpath = "";
if( systemEncoding == null || systemEncoding.trim().length() < 1 ) {
    urlpath = URLDecoder.decode( url.getPath(), "UTF-8" );
} else {
urlpath = URLDecoder.decode( url.getPath(), systemEncoding );
}
//获取配置文件在系统中实际路径
String fileRFSPath = new File( urlpath ).getAbsolutePath();
//获取LOG日志所在路径(因为配置文件放于class目录下,所以取得的地址为"WEB-INF\logs\land_cms.log",如有变动需改动代码)如果是windows那么可以用\\如果是liux或AIX那么就用File.separator
/*String tempLogFileUri = fileRFSPath.substring( 0, fileRFSPath.lastIndexOf( "\\" ) );
String landLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( "\\" ) )
                        + File.separatorChar + FOLDER_LOG + FILE_LAND_LOG;
    String iBatiesLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( "\\" ) )
                               + File.separatorChar + FOLDER_LOG + FILE_IBATIES_LOG;
    String strutsLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( "\\" ) )
                              + File.separatorChar + FOLDER_LOG + FILE_STRUTS_LOG; */
String tempLogFileUri = fileRFSPath.substring( 0, fileRFSPath.lastIndexOf( File.separator ) );
String landLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( File.separator ) )
                        + File.separatorChar + FOLDER_LOG + FILE_LAND_LOG;
    String iBatiesLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( File.separator ) )
                               + File.separatorChar + FOLDER_LOG + FILE_IBATIES_LOG;
    String sqlLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( File.separator ) )
                + File.separatorChar + FOLDER_LOG + FILE_SQL_LOG;
    String strutsLogFileUri = fileRFSPath.substring( 0, tempLogFileUri.lastIndexOf( File.separator ) )
                              + File.separatorChar + FOLDER_LOG + FILE_STRUTS_LOG;
//设置系统环境变量(配置文件中用于读取LOG日志存放位置)
System.setProperty( "land_log.logfile", landLogFileUri );
System.setProperty( "land_iBatis.logfile", iBatiesLogFileUri );
System.setProperty( "land_struts.logfile", strutsLogFileUri );
System.setProperty( "land_SQL.logfile", sqlLogFileUri );
//用配置文件配置LOG4J
PropertyConfigurator.configure( fileRFSPath );
} else {
//无法找到Log4j配置文件,但忽略错误
}
} catch (UnsupportedEncodingException e) {
//不支持UTF-8编码方式,忽略错误
}//end of catch
    }//end of static
   
    /**
     * 根据配置获得log4j的Logger对象,用于日志输出之类.(如果参数为String,
     * 则该String作为日志输出栏目名称,否则则以类名作为日志输出栏目名称)
     * @param obj
     * @return Logger
     */
    public static Logger getLog( Object obj ) {
    if( obj instanceof String ) {
    return Logger.getLogger( (String)obj );
    } else if ( obj instanceof Class ) {
    return Logger.getLogger( (Class)obj );
    } else {
    return Logger.getLogger( obj.getClass() );
    }//end of else
    }//end of method getLog()

}//end of class



具体的配制文件如下:
# Set root logger level to DEBUG and its only appender to A1.
#具体的log根
log4j.rootLogger = INFO, Land
#log4j.category.org.apache.struts2 = DEBUG, Struts2//这个就不要了
#
# Land.log让普通的log输出到Land级别为INFO如果在log根里有了Land那么就不要加下面这句了(要不然会重复输出)
#log4j.logger.com.land = INFO,Land
#
log4j.appender.Land = org.apache.log4j.RollingFileAppender//将Land输出到一个文件并可指定文件的大小//DailyRollingFileAppender每天输出一个文件//FileAppender输出到一个文件//ConsoleAppender输出#到控制台//WriterAppender以流的形式输出到任意指定的地方
log4j.appender.Land.File = ${land_log.logfile}//具体的文件名
log4j.appender.Land.MaxFileSize = 10mb//每10M换一个文件
log4j.appender.Land.MaxBackupIndex = 5//备份最多为5个
log4j.appender.Land.layout = org.apache.log4j.PatternLayout//控制输出
log4j.appender.Land.layout.ConversionPattern = %d{ISO8601} %5p [%30.40c:%4L] %m%n  //具体的输出方式

#下面是采用ibatis3的输出
# iBaties3.log
log4j.additivity.org.apache.ibatis = false//输出到新的里面
# SqlMap logging configuration... 
log4j.logger.org.apache.ibatis=DEBUG,iBaties3  //让ibatis以DEBUG输出到 iBaties3这个相应的参数文件里
log4j.logger.org.apache.ibatis.common.jdbc.SimpleDataSource=ERROR  
log4j.logger.org.apache.ibatis.common.jdbc.ScriptRunner=ERROR  
log4j.logger.org.apache.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR 

#
log4j.appender.iBaties3 = org.apache.log4j.RollingFileAppender
#log4j.appender.iBaties3.Threshold=DEBUG
log4j.appender.iBaties3.File = ${land_iBatis.logfile}
#log4j.appender.iBaties3.Append=true
log4j.appender.iBaties3.MaxFileSize = 2mb
log4j.appender.iBaties3.MaxBackupIndex = 2
log4j.appender.iBaties3.layout = org.apache.log4j.PatternLayout
log4j.appender.iBaties3.layout.conversionPattern = %d [%t] %-5p %c - %m%n

#
#sql语句
log4j.additivity.java.sql = false
log4j.logger.java.sql=DEBUG,SQLq //让sql以DEBUG形式输出到以SQLq为参数的相应文件里
log4j.logger.java.sql.Connection=DEBUG//具体的接连
log4j.logger.java.sql.Statement=EEEOR  
log4j.logger.java.sql.PreparedStatement=DEBUG//具体的sql
log4j.logger.java.sql.ResultSet=DEBUG//具体的返回结果
#
log4j.appender.SQLq = org.apache.log4j.RollingFileAppender
#log4j.appender.SQLq.Threshold=DEBUG
log4j.appender.SQLq.File = ${land_SQL.logfile}
#log4j.appender.SQLq.Append=true
log4j.appender.SQLq.MaxFileSize = 2mb
log4j.appender.SQLq.MaxBackupIndex = 2
log4j.appender.SQLq.layout = org.apache.log4j.PatternLayout
log4j.appender.SQLq.layout.conversionPattern = %d [%t] %-5p %c - %m%n
#
# struts2.log  struts2的日志
log4j.additivity.org.apache.struts2 = false
log4j.logger.org.apache.struts2 = DEBUG,Struts2
#
log4j.appender.Struts2 = org.apache.log4j.RollingFileAppender
log4j.appender.Struts2.file = ${land_struts.logfile}
log4j.appender.Struts2.MaxFileSize = 2mb
log4j.appender.Struts2.MaxBackupIndex = 2
log4j.appender.Struts2.layout = org.apache.log4j.PatternLayout
log4j.appender.Struts2.layout.conversionPattern = %d [%t] %-5p %c - %m%n

0
0
分享到:
评论

相关推荐

    log4j使用教程(详解)

    Log4j是一款广泛使用的开源日志框架,由Apache软件基金会开发。本文将深入探讨Log4j的基本概念、配置与使用方法。 1. **什么是Log4j** Log4j是一个基于Java的日志记录工具,它提供了灵活的控制来记录日志信息,...

    log4j使用详解 j2EE

    #### 四、在代码中使用Log4j 要在代码中使用Log4j,首先需要获取一个Logger实例。 - **语法**:`public static Logger getLogger(String name)` - **示例**: ```java import org.apache.log4j.Logger; ...

    Log4j使用实例

    ### Log4j 使用实例详解 #### 一、Log4j简介 Log4j 是一个开源的日志记录框架,由 Apache 软件基金会提供。它允许开发者根据需求配置日志等级,并灵活选择日志信息的输出方式。Log4j 的核心组件包括 Logger、...

    log4j使用详细方法

    **日志框架Log4j详解** Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java开发中。...通过阅读提供的"log4j使用方法"文档,你将能更深入地了解Log4j的配置和使用技巧,为你的开发工作带来便利。

    log4j使用详解log4j使用详解

    ### Log4j 使用详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,通过使用 Log4j,开发者能够控制日志信息的输出等级及去向,从而更加灵活地处理日志信息。它具有强大的功能,简单的配置,并且能够支持...

    log4j使用笔记

    #### 四、log4j 配置详解 1. **配置文件**: - `log4j.properties` 或 `log4j.xml` 文件用于定义 log4j 的配置规则。 - 配置文件通常放置在项目的根目录或者类路径下。 - 如果未指定配置文件的位置,则 log4j 会...

    log4j.rar log4j使用方法

    标题“log4j.rar log4j使用方法”暗示了我们要讨论的是一个关于log4j日志框架的压缩包文件,其中包含了如何使用log4j的指导资料。log4j是Java编程语言中广泛使用的开源日志记录工具,它允许开发者灵活地控制日志信息...

    log4j使用配置方法及项目中的应用

    ### log4j使用配置方法及项目中的应用 #### 概述与背景 在软件开发过程中,日志记录是一项至关重要的任务,它不仅帮助开发者监控代码执行状态,还为后续的故障排查、性能优化和安全审计提供了关键信息。传统的做法...

    log4j使用简介.txt

    ### log4j 使用简介 #### 一、Log4j 概述 Log4j 是一个由 Apache 提供的开源项目,专门用于实现日志记录功能。它为开发者提供了灵活的日志记录方式,允许通过多种不同的格式来记录每一条日志信息,并且能够将这些...

    Log4j使用手册

    以下是Log4j的核心组成部分、使用方法以及日志分级的详细解释。 1. **LOG4J组成**: - **Logger**:是Log4j的核心,负责决定哪些日志信息应该被记录和哪些应该被忽略。它根据预定义的级别来过滤日志,由`org....

    Log4j使用教程

    ### 四、使用Log4j 在Java代码中,我们可以使用以下方式调用Log4j记录日志: ```java import org.apache.log4j.Logger; public class MyClass { private static final Logger logger = Logger.getLogger(MyClass...

    apache log4j使用大全

    Apache Log4j 是一个广泛使用的开源日志框架,它为Java应用程序提供了强大的日志记录功能。Log4j 的主要优点在于它的灵活性和可配置性,允许开发者根据需要调整日志的输出目的地、格式以及级别。 **配置Log4j** ...

    log4j使用实例.zip

    这个"log4j使用实例.zip"压缩包包含了关于如何在Java项目中配置和使用Log4j的示例代码,非常适合Java后端初学者学习。 首先,Log4j的核心组件包括Logger、Appender和Layout。Logger是日志信息的生产者,负责生成...

    log4j使用手册和API chm格式

    "Log4j使用手册和API"则明确指出了文档的核心内容,Log4j是一个广泛使用的Java日志库,它的API提供了丰富的日志记录功能,包括不同级别的日志输出(如DEBUG, INFO, WARN, ERROR等)、自定义日志格式、日志分发等。...

    Java Log4j使用详解

    #### 四、使用Log4j ##### 4.1 概述 Log4j是另一个非常流行的Java日志框架,由Apache基金会维护。它比JCL更加强大,支持更多的特性,比如多级日志记录、动态日志文件配置等。Log4j的核心优势在于其灵活性和强大的...

    log4j使用总结

    Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。 在配置文件中,我们可以定义多个日志信息输出目的地,例如...

    log4j 使用介绍

    【log4j 使用介绍】 log4j 是一个广泛使用的 Java 日志框架,它提供了一种高效、灵活的方式来记录应用程序中的事件。这篇介绍旨在帮助初学者理解 log4j 的核心概念和使用方法。 **1. 简介** 日志记录在软件开发中...

    最详细的Log4j使用教程

    Log4j是一个广泛使用的Java日志框架,由ApacheJakarta项目开发。它为开发者提供了灵活且功能丰富的日志记录机制,使应用程序中的日志管理变得简单。本教程将深入介绍如何使用Log4j进行日志记录,包括配置、基本用法...

Global site tag (gtag.js) - Google Analytics