java的log4j的xml_摘录:一个配置比较全的log4j.xml文件

由于项目中使用的log4j.xml这种配置 在网上找到这份介绍较全的 就摘录下来 一起分享

使用log4j

获取logger

Logger.getRootLogger() 获取根logger

Logger.getLogger(String name)获取子logger

Logger.getLogger(Class clazz)或

Logger.getLogger(clazz.getName())

设置日志级别(.setLevel(int,Exception))

Level.ALL打开所有日志

Level.DEBUG 用于调试

Level.INFO 用于运行过程

Level.WARN 用于潜在的错误

Level.ERROR 用于错误事件

Level.FATAL 用于严重错误时间

Level.OFF 关闭所有日志

输出端Appender(.addAppender(Appender).setAdditivity(boolean additive)是否覆盖)

org.apache.log4j.ConsoleAppender 输出到控制台

targer:

ConsoleAppender.SYSTEM_OUT(Default)

ConsoleAppender.SYSTEM_ERR

public ConsoleAppender(Layout)

public ConsoleAppender(Layout,String targer)

org.apache.log4j.FileAppender 输出到文件

public FileAppender(Layout,String fileName)

public FileAppender(Layout,String fileName,boolean append)是否覆盖

org.apache.log4j.DailyRollingFileAppender 输出到文件,每天一个新文件

org.apache.log4j.RollingFileAppender 输出到文件,自动新增改名

public RollingFileAppender(Layout,String fileName)

void setMaxBackupIndex(int index) 设置日志文件最大备份数

void setMaximumFileSize(long size) 设置日志文件最大尺寸

org.apache.log4j.WriterAppender 流格式输出到任意地方

org.apache.log4j.JDBCAppender 输出到数据库

日志格式化(Layout)

%c 类全名

%d 时间

%f 类名

%l 位置

%m 信息

%n 换行

%p 级别

%r 耗时

%t 线程名

public PatternLayout() 使用默认设置DEFAULT_CONVERSION_PATTERN 只打印信息

public PatternLayout(String)使用自定义的pattern构造一个PatternLayout

void setConversionPattern(String) 设置日志格式

HTMLLayout

SimpleLayout

5.

1.BasicConfigurator.configure()

PatternLayout p = new PatternLayout("%p [%t] %c (%F:%L) - %m%n");

ConsoleAppender a = new ConsoleAppender(p,ConsoleAppender.SYSTEM_OUT);

root.addAppender(a);

rootLogger.setLevel(Level.DEBUG);

2.PropertyConfigurator.configure("/help/example.properties")

String resource = "/help/example.properties";

URL configFileResource = Log4J.class.getResource(resource);

PropertyConfigurator.configure(configFileResource);

3.DOMConfigurator.configure("/help/example.xml")

xml declaration and dtd

|

log4j:configuration

|

+-- appender (name, class)

| |

| +-- param (name, value)

| +-- layout (class)

| |

| +-- param (name, value)

+-- logger (name, additivity)

| |

| +-- level (class, value)

| | |

| | +-- param (name, value)

| +-- appender-ref (ref)

+-- root

|

+-- param (name, class)

+-- level

| |

| +-- param (name, value)

+-- appender-ref (ref)

0.log4j.properties模板

log4j.rootLogger=info,CONSOLE,RFILE,FILE,DB 设置级别和三个输出端

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Target=System.out 控制台类型

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern= %4p [%t] (%F:%L) - %m%n

log4j.appender.FILE=org.apache.log4j.FileAppender

log4j.appender.FILE.File=/help/my.properties 目标文件

log4j.appender.FILE.Append=false 是否追加

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 布局模式

log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %c:%L - %m%n 格式化布局

log4j.appender.RFILE=org.apache.log4j.RollingFileAppender

log4j.appender.RFILE.File=/help/my.properties 目标文件

log4j.appender.RFILE.MaxFileSize=1KB 最大长度

log4j.appender.RFILE.MaxBackupIndex=3 最多备份

log4j.appender.RFILE.layout=org.apache.log4j.PatternLayout 布局模式

log4j.appender.RFILE.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %c:%L - %m%n 格式化布局

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.DB.URL=jdbc:oracle:thin:@127.0.0.1:1521:mumu URL

log4j.appender.DB.driver=oracle.jdbc.driver.OracleDriver 驱动

log4j.appender.DB.user=liulibo 用户名

log4j.appender.DB.password=liulibo 密码

log4j.appender.DB.layout=org.apache.log4j.PatternLayout 布局模式

log4j.appender.DB.layout.ConversionPattern=insert into log4j(createdate,thread,level_,class,message) values(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')

create table log4j(createdate varchar2(32),thread varchar2(32),level_ varchar2(32),class varchar2(32),message varchar2(32));

0.XML模板

应用

web.xml

props

/WEB-INF/log4j.properties

cart.listener.SCServletContextListener

初始化方法中添加

private void initLog4j(ServletContext context){

String prefix = context.getRealPath("/");

System.out.println("prefix:"+prefix);

String props = context.getInitParameter("props");

if(props != null) {

PropertyConfigurator.configure(prefix+props);

}

Logger logger = Logger.getLogger(SCServletContextListener.class);

}

xmlns:log4j='http://jakarta.apache.org/log4j/'>

class="org.apache.log4j.ConsoleAppender">

class="org.apache.log4j.RollingFileAppender">

value="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" />

class="org.apache.log4j.DailyRollingFileAppender">

class="org.apache.log4j.RollingFileAppender">

value="%d %-5p %c - %m [%t] (%F:%L)%n" />

class="org.apache.log4j.RollingFileAppender">

class="org.apache.log4j.RollingFileAppender">

class="org.apache.log4j.net.SocketAppender">

===================================================

今天弄mondrian时才注意log4j.xml,原来一直使用log4j.properties,发现它比properties功能强大,可以配置输出多个log文件。

转一个基本的配置:

log4j 有两种配置方法,大家熟知的是properties文件但是最近的项目实施中,每次去用户那里装系统,都要苦恼于log文件放在不同位置,要改property文件就要重打jar包,麻烦的紧。而如果采用xml配置的方法,直接放在WEB-INFO下,要修改路径,很方便。查了些资料,终于把系统的log4j改成在xml中配置啦。

记一下记一下……嘿嘿

附:log4j的API http://logging.apache.org/log4j/docs/api/index.html

log4i.xml 文件

class="org.apache.log4j.RollingFileAppender">

value="%-4r [%t] %-5p %c %x - %m%n" />

建好xml文件后 要写一个servlet类继承actionservlet,当工程初始化时自动加载xml配置文件

package com.asiainfo;

import javax.servlet.ServletException;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.log4j.xml.DOMConfigurator;

import org.apache.struts.action.ActionServlet;

public class ExtendedActionServlet extends ActionServlet {

private Log log = LogFactory.getLog(this.getClass().getName());

public ExtendedActionServlet() {}

public void init() throws ServletException {

log.info(

"Initializing, My MyActionServlet init this System's Const Variable");

String prefix = this.getServletConfig().getServletContext().getRealPath(

"/");//读取项目的路径

String file = this.getServletConfig().getInitParameter("log4j");

//读取log4j相对路径

String filePath = prefix + file;

DOMConfigurator.configure(filePath);//加载.xml文件

log.info("Initializing, end My Init");

super.init();//应用了struts,此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作

}

}

我们可以看到 在此类中 用了相对路径来加载xml的方法,首先通过prefix 读取了项目的路径然后再通过读取web.xml中的log4j变量,获得log4j.xml的相对路径 两者结合 就是他的绝对路径拉

最后在web.xml中配置action信息 就可以实现加载啦

web.xml

action

com.asiainfo.ExtendedActionServlet

config

/WEB-INF/struts-config.xml

config/tsextend

/WEB-INF/tsextend/struts-config.xml

log4j

/WEB-INF/log4j.xml

info

3

detail

3

0

action

*.do

依据各个级别的日志输出到不同文件

log4j支持这个功能,不过不能再使用Properties配置,必须使用XML

建一个log4j.xml

代码中DOMConfigurator.configure( "log4j.xml ");

这样就可以在log.debug和log.info时分别打印到不同文件中,如果你还需要更多的文件,可以复制多几次appender就可以了

(1). 输出方式appender一般有5种:

org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)

org.apache.log4j.ConsoleAppender (控制台)

org.apache.log4j.FileAppender (文件)

org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)

org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

(2). 日记记录的优先级priority,优先级由高到低分为

OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。

Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。

(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):

%c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)

%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}

%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数

%n 换行符

%m 输出代码指定信息,如info(“message”),输出message

%p 输出优先级,即 FATAL ,ERROR 等

%r 输出从启动到显示该log信息所耗费的毫秒数

%t 输出产生该日志事件的线程名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值