1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > log4j日志文件 log4j.xml log4j.properties配置

log4j日志文件 log4j.xml log4j.properties配置

时间:2023-02-26 10:10:28

相关推荐

log4j日志文件  log4j.xml   log4j.properties配置

1,导入log4j jar包;

2,配置log4j.xml或log4j.properties文件;

-----------------------------------------------------------------------------------------------------------

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

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="/log4j/" debug="false">

<!--输出方式:输出到控制台-->

<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">

<!--

设置通道名称和输出方式,其中输出方式appender有5种,分别为

org.apache.log4j.RollingFileAppender

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

org.apache.log4j.FileAppender (文件)

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

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

-->

<param name="Target" value="System.out"/>

<param name="Threshold" value="INFO"/>

<!--

Threshold是个全局的过滤器,他将把低于所设置的level的信息过滤不显示出来

-->

<!-- 设置日志输出的格式-->

<layout class="org.apache.log4j.PatternLayout">

<!--

参数都以%开始后面不同的参数代表不同的格式化信息:

%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 输出产生该日志事件的线程名-->

<!-- The default pattern: Date Priority [Category] Message\n -->

<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>

</layout>

</appender>

<!--输出方式是:每天一个日志文件-->

<!--设置通道名称是:file,输出方式DailyRollingFileAppender-->

<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">

<!--日志文件路径和文件名称 -->

<!-- 加../在logs,加/在C盘,不加在bin目录 -->

<!--

如果在加载时设置了变量System.setProperty("WebApp", appRoot),

可在此取出来${WebApp} -->

<param name="File" value="F:/xxy/mylog.log"/>

<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->

<param name="Append" value="true"/>

<!-- Rollover at midnight each day -->

<!-- e.g. mylog.log.-11-25.log -->

<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>

<!-- Rollover at the top of each hour

<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>

-->

<layout class="org.apache.log4j.PatternLayout">

<!--

The default pattern: Date Priority [Category] Message\n

-->

<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

<!--

The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n -->

<!--

<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

-->

</layout>

</appender>

<appender name="ERROR_LOG" class="org.apache.log4j.DailyRollingFileAppender">

<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>

<param name="File" value="error.log"/>

<param name="Append" value="true"/>

<!-- 指定日志输出级别 -->

<param name="Threshold" value="INFO"/>

<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

</layout>

</appender>

<!--

level:是日记记录的优先级,优先级由高到低分为

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

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

-->

<!-- 指定logger的设置,additivity指示是否叠加输出log,如果是false,

在DsErrorLog logger中日志不会被其它logger满足条件的logger(比如root)

输出

-->

<!-- 将名称为DSErrorLog的logger,输出到“EEROR_LOG”的appender

所谓logger的名字也就是,在定义Logger时,构造函数的参数

Logger log = Logger.getLogger("DSErrorLog");

-->

<logger name="DSErrorLog" additivity="false">

<level class="org.apache.log4j.Level" value="DEBUG"/>

<appender-ref ref="ERROR_LOG"/>

</logger>

<!--

输出指定类包中的日志,比如想输出

Hibernate运行中生成的SQL语句,可作如下设置

-->

<category name="org.hibernate.SQL">

<priority value="DEBUG"/>

<!--

如果指定一个appender,这些log将被输出到指定的appender

如:<appender-ref ref="myFile"/>

否则将作用于所有的appender

-->

</category>

<!--

根默认会自动构建一个 root,输出INFO级别的日志到控制台,供logger继承

-->

<root>

<priority value ="INFO"/>

<appender-ref ref="myConsole"/>

<appender-ref ref="myFile"/>

</root>

</log4j:configuration>

----------------------------------------------------------------------------------------------------------

3,测试代码;

public class LoggerTest {

static Logger log4j = Logger.getLogger(LoggerTest.class.getName());

public static void main(String args[]){

PropertyConfigurator.configure("rec/log4j.xml");

log4j.info("log4j.info");

log4j.warn("log4j.warning");

log4j.error("log4j.error");

log4j.debug("log4j.fatal");

}

}

-----------------------------------------------------------------------------------------------------------

4,在web项目中使用;

利用web项目启动的时候去加载log4j.xml配置文件

在web.xml文件中

<context-param>

<param-name>log4jConfigLocation</param-name>

<param-value>log4j.xml</param-value>

</context-param>

<!-- 加载log4j配置文件 -->

<listener>

<listener-class>onlyfun.logger.Log4jConfigListener</listener-class>

</listener>

public class Log4jConfigListener implements ServletContextListener{

public static final String CONFIG_LOCATION_PARAM = "log4jConfigLocation";

public static final String XML_FILE_EXTENSION = ".xml";

public void contextDestroyed(ServletContextEvent event) {

LogManager.shutdown();

}

public void contextInitialized(ServletContextEvent event) {

String location = event.getServletContext().getInitParameter(CONFIG_LOCATION_PARAM);

if (location != null) {

if (!location.startsWith("/")) {

location = "/" + location;

}

location = event.getServletContext().getRealPath(location);

//如果是xml结尾就用DOM解析,否则就用properties解析

if (location.toLowerCase().endsWith(XML_FILE_EXTENSION)) {

DOMConfigurator.configure(location);

}else {

PropertyConfigurator.configure(location);

}

}

}

}

加载完毕...........................................................................................................................................

最后,可写个公共方法便于应用

public class Log4jUtil {

public static Logger getInfoLogger(){

return Logger.getLogger("INFO2222");

}

public static Logger getErrorLogger(){

return Logger.getLogger("ERROR_LOG");

}

}

在别的类中可用以下得到:

Log4jUtil.getInfoLogger().info("--------massage---------");

到此为止,主要为自己做备忘,同时方便有需要的人。呵呵!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。