`
a25765339
  • 浏览: 62500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【将不同级别日志分别输出到文件】log4j配置

阅读更多
源代码
     public boolean isAsSevereAsThreshold(Priority priority)  
      {  
          return threshold == null || priority.isGreaterOrEqual(threshold);  
      }  



重写
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;

public class LogAppender extends DailyRollingFileAppender {
	@Override
	public boolean isAsSevereAsThreshold(Priority priority) {
		// 只判断是否相等,不判断优先级
		return this.getThreshold().equals(priority);
	}

}



public class Test {
	static Logger log = Logger.getLogger(Test.class);

	public static void main(String[] args) throws Exception {
		try {
			throw new Exception("抛出异常测试");
		} catch (Exception e) {
			log.info(e.getMessage(), e);
		}
	}
}

log4j.rootLogger=debug,console,A1,A2,A3
#输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern =[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] %l %m%n

#输出log.info日志 按照日期分割文件
log4j.logger.info=A1
log4j.appender.A1=com.log.LogAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] %l %m%n
log4j.appender.A1.datePattern='.'yyyy-MM-dd
log4j.appender.A1.Threshold = info
log4j.appender.A1.append=true
log4j.appender.A1.File=f:/tomcat.log

#输出log.debug日志 按照日期分割文件
log4j.logger.debug=A2
log4j.appender.A2=com.log.LogAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] %l %m%n
log4j.appender.A2.datePattern='.'yyyy-MM-dd
log4j.appender.A2.Threshold = debug
log4j.appender.A2.append=true
log4j.appender.A2.File=f:/tomcatDebug.log

#输出log.error日志 按照文件大小分割日志,最多10个日志
#ConversionPattern会打印出catch语句块儿中,抛出异常的行号
log4j.logger.error=A3
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p %c (%F\:%L) \: %m%n
log4j.appender.A3.Threshold = ERROR
log4j.appender.A3.append=true
log4j.appender.A3.File=f:/tomcatError.log
log4j.appender.A3.MaxFileSize=100KB
log4j.appender.A3.MaxBackupIndex=10





log4j是apache基金会的一个项目,日志记录器(Logger)是日志处理的核心组件,log4j具有7种级别(Level).
DEBUG Level: 指出细粒度信息事件对调试应用程序是非常有帮助的,就是输出debug的信息.
INFO level:  表明消息在粗粒度级别上突出强调应用程序的运行过程,就是输出提示信息.
WARN level:  表明会出现潜在错误的情形,就是显示警告信息.
ERROR level: 指出虽然发生错误事件,但仍然不影响系统的继续运行.就是显示错误信息.
FATAL level: 指出每个严重的错误事件将会导致应用程序的退出.
ALL level:   是最低等级的,用于打开所有日志记录.
OFF level:   是最高等级的,用于关闭所有日志记录.

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。

比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。

如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。

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

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

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
%c:输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的围  如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName
%m:输出代码指定信息,如info(“message”),输出message
%r:输出从启动到显示该log信息所耗费的毫秒数
%t:输出产生该日志事件的线程名
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。


如何修改tomcat控制台日志文件输出路径和文件名?
修改tomcat/bin/catalina.sh文件
if [ -z "$CATALINA_OUT" ] ; then
  #CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
  CATALINA_OUT=/data/logs/tomcat/catalinaYourName.out
fi

分享到:
评论

相关推荐

    Log4j2实现不同线程不同级别日志输出到不同的文件中

    在“Log4j2实现不同线程不同级别日志输出到不同的文件中”这个主题中,我们将深入探讨如何利用Log4j2实现这一高级日志管理需求。 1. **日志级别**: - 在Log4j2中,日志级别包括DEBUG、INFO、WARN、ERROR、FATAL...

    SSM整合中的Log4j日志的配置详情

    这个配置定义了 Mybatis 的日志输出级别为 DEBUG,并将日志信息输出到控制台和文件中。 Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM 整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关...

    log4j日志配置以及配置文件详解

    接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...

    log4j(二):动态配置日志输出路径

    在Web应用中,如使用的是Servlet环境,可以通过在`web.xml`中配置`ContextLoaderListener`来加载Log4j配置,同时,我们还可以创建一个Servlet,当接收到特定请求时,更新Log4j配置。 ```xml <!-- web.xml 示例 --> ...

    mybatis,log4j打印日志到后台和文件

    总结,通过以上步骤,你已成功配置了 MyBatis 使用 Log4j 来记录日志,同时将日志输出到后台控制台和文件,这有助于在开发和调试过程中追踪问题,提高代码的可维护性。记得根据实际需求调整日志级别和输出格式,以...

    log4j2在项目中的配置,对不同级别的日志进行不同文件的存储

    本文将详细解释如何配置Log4j2以实现不同级别的日志分别存储到不同的文件中。 首先,确保在项目中正确引入了Log4j2的jar包。通常,这可以通过在Maven或Gradle构建文件中添加依赖来完成。对于Maven,可以在pom.xml...

    log4j 配置日志文件,把日志信息输出到项目的某个文件夹下

    在实际项目中,你可能会根据需求调整配置,比如添加多个appender分别处理不同级别的日志,或者使用网络appender将日志发送到中央日志服务器。总的来说,log4j的灵活性和强大的功能使其成为Java开发中的必备工具,...

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

    Log4j将System.out搞到log4j中输出四

    Log4j提供了一个名为`org.apache.log4j.ConsoleAppender`的类,用于将日志输出到控制台,我们可以通过自定义Filter或者继承现有Appender来实现这个功能。 下面是一个简单的示例,展示如何在Log4j配置文件中设置...

    log4j配置 输出日志 案例

    本文将深入讲解如何配置log4j以实现日志输出到控制台和文件,并提供相关代码实例和案例分析。** ### 一、Log4j简介 Log4j是Apache组织开发的一个开源项目,用于生成日志信息。它提供了灵活的配置方式,支持多种输出...

    配置好log4j的eclipse简单工程,每天输出到一个日志文件中,该文件名为:“XXX_年月日时分.log”的形式

    本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名格式的文件中,即“XXX_年月日时分.log”。下面我们将详细解析这个配置及其工作原理。 1. **Log4j介绍**: Log4j是一...

    log4j按功能保存日志

    在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...

    tomcat下的log4j日志配置

    2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...

    log4j的eclipse工程,输出到文件的方式配置log4j

    总结来说,这个Eclipse工程展示了如何在Java应用中使用Log4j框架,通过配置文件设定日志输出到文件的策略,以及在代码中如何使用这些配置进行日志记录。这对于开发者调试、问题排查以及系统监控至关重要。

    log4j多文件输出打印

    在"Log4j多文件输出打印"的场景下,我们通常会配置多个Appender,每个Appender对应一个不同的输出文件。这样,不同的日志信息可以被分别写入不同的文件,便于管理和分析。例如,在`log4j.properties`配置文件中,...

    Log4j 把不同包的日志打印到不同位置

    这篇博客"Log4j 把不同包的日志打印到不同位置"可能详细解释了如何利用Log4j配置来实现特定包的日志定向输出,以便于管理和分析来自不同模块的日志信息。 在Java应用中,我们常常会遇到多个模块或者不同包的类同时...

    log4j-控制指定类,包的日志级别:log4j-demo.zip

    在Log4j中,控制日志级别主要通过配置文件`log4j.properties`或`log4j.xml`来实现。在提供的压缩包`log4j-demo`中,我们可以找到这样的配置文件。例如,如果我们想要控制特定类`com.example.MyClass`的日志级别为...

    Log4j日志配置说明,Log4j日志配置说明

    ### Log4j日志配置详解 #### 一、概述 Log4j 是一个基于 Java 的开源...例如,可以设置不同的 Appender 来分别处理不同级别的日志,或者配置滚动文件 Appender 来按时间或大小自动分割日志文件,提高性能和管理效率。

    log4j2的配置案例,可直接使用

    配置了三个日志输出器,分别是控制台输出器“Console”以及三个文件输出器“debug_appender”、“info_appender”和“error_appender”。 控制台输出器只会输出级别为“info”及以上的日志信息,输出格式为“[%-5...

Global site tag (gtag.js) - Google Analytics