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="http://jakarta.apache.org/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.2009-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---------");

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

log4j日志文件 log4j.xml log4j.properties配置的更多相关文章

  1. Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出

    1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...

  2. java log4j 日志文件

    开发中经常会用到log日志文件,根据业务需要可能不产生很大日志文件给维护和[排错带来了麻烦.所以我们希望能够每天或每个月产生一个日志文件,这样文件不至于过大. 或者根据日志文件大小来判断,超过规定大小 ...

  3. log4j 日志文件(Day_19)

    详细  :   https://www.cnblogs.com/liaojie970/p/7634838.html log4j  日志文件 1 log4j.rootLogger=debug,CONSO ...

  4. Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)

    1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...

  5. Spring MVC中 log4j日志文件配置相对路径

    log4j和web.xml配置webAppRootKey 的问题 1 在web.xml配置 <context-param>  <param-name>webAppRootKey ...

  6. Hibernate使用Log4j日志记录(使用xml文件)

    日志记录使程序员能够将日志详细信息永久写入文件. Log4j和Logback框架可以在hibernate框架中使用来支持日志记录. 使用log4j执行日志记录有两种方法: 通过log4j.xml文件( ...

  7. log4j日志文件配置

    ### set log levels ### ### debug (打印代码中logger.debug(xx)的信息)> info(打印代码中logger.info(xx)的信息) log4j. ...

  8. apache log4j日志工具使用入门[maven 项目配置]

    简单的介绍下Maven项目中有关org.apache.log4j.Logger的使用.[1]首先我们需要找到 org.apache.log4j.Logger的坐标,并配置到POM.xml <de ...

  9. [ log4j ]-日志文件的使用

    在java文件中通过 log4j 输出日志信息 1,先引入 log4j-xx.x.jar 包 2,新建一个日志类 PrintLog4j.java: package com.stu.log4j; imp ...

随机推荐

  1. [Nhibernate]二级缓存(二)

    目录 写在前面 文档与系列文章 更新数据 二级缓存管理 总结 写在前面 本篇文章也算nhibernate入门系列的结尾了,在总结nhibernate系列的过程中,遇到了很多问题,学习的过程也是解决bu ...

  2. c# 网络

    http://www.cnblogs.com/fuchongjundream/p/4079128.html http://stackoverflow.com/questions/21728773/th ...

  3. UIScrollView和控制器

    一般情况下,就设置UIScrollView所在的控制器 为 UIScrollView的delegate 设置控制器为UIScrollView的delegate有2种方法: 通过代码(self就是控制器 ...

  4. python基础三

    多级菜单 多级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典 #!/usr/bin/env python # -*- coding: utf-8 -*- menu = { '北京':{ '海淀 ...

  5. RobotFrameWork(六)控制流之For循环

    转自: http://blog.csdn.net/mengfanbo123/article/details/9033645 For循环 函数结构范例: :For 变量  IN  序列(or 列表) 关 ...

  6. .NET程序员转Java不完全指南

    首先要声明一点,“转”字并不包含那种语言牛B的意思. 然后要声明一点,“转”字仅限于企业应用开发的语言的转. 假设各种数据库切换无代沟, 假设各种WEB客户端技术无障碍. 1.搭建环境,IDE主流是e ...

  7. Linux find 用法示例

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  8. Ruby基本类型

    #!/usr/bin/ruby =begin Ruby支持的有5种类型的变量 全局变量:以$开头 未初始化的全局变量的值为0 并使用-w选项产生警告 全局变量的赋值会改变全局状态 不推荐使用全局变量  ...

  9. Java Web技术之JSP与EL表达式

    1,jsp是用来干嘛的? JSP技术是用来解决在Servlet中需要书写大量的拼接html标签.以及框架的代码 2,jsp的三种脚本元素 a.JSP的脚本声明(定义) 格式: <%! 书写Jav ...

  10. 移动端touchstart、touchmove事件的基本使用

    在pc端,我们通常使用$(window).scroll()事件来监听元素的位置,来做一些入场动效,如: $(window).scroll(function(){ var panel3Move = do ...