基于web项目log日志指定输出文件位置配置方法

 更新时间:2018年04月28日 09:50:58   作者:Smile_Miracle  
下面小编就为大家分享一篇基于web项目log日志指定输出文件位置配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置。

<context-param>
   <param-name>webAppRootKey</param-name>
   <param-value>amt.root</param-value>
</context-param>

然后要定义项目log配置文件的路径以及log4j监听器

<context-param> 
  <param-name>log4jConfigLocation</param-name> 
  <param-value>classpath:conf/log4j.xml</param-value> 
</context-param> 
 <!--定义LOG4J监听器--> 
<listener>
 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 

这样web.xml文件的配置完毕,然后就是log配置文件的具体配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
 <!-- 将日志信息输出到控制台 -->
 <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
  <!-- 设置日志输出的样式 -->
  <layout class="org.apache.log4j.PatternLayout">
   <!-- 设置日志输出的格式 -->
   <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
  </layout>
  <!--过滤器设置输出的级别-->
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <!-- 设置日志输出的最小级别 -->
   <param name="levelMin" value="INFO" />
   <!-- 设置日志输出的最大级别 -->
   <param name="levelMax" value="ERROR" />
   <!-- 设置日志输出的xxx,默认是false -->
   <param name="AcceptOnMatch" value="true" />
  </filter>
 </appender>
 <!-- 将日志信息输出到文件,可以配置多久产生一个新的日志信息文件 -->
 <appender name="rollingFile" class="org.apache.log4j.DailyRollingFileAppender">
  <!-- 设置日志信息输出文件全路径名 -->
  <param name="File" value="${amt.root}/logs/spdbData.log" />
  <!-- 设置日志每小时回滚一次,即产生一个新的日志文件 -->
  <param name="DatePattern" value="'_'yyyy-MM-dd-HH'.log'" />
  <!-- 设置日志输出的样式 -->
  <layout class="org.apache.log4j.PatternLayout">
   <!-- 设置日志输出的格式 -->
   <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
  </layout>
 </appender>
 <!--
  注意:
  1:当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制
  2:logger中的name非常重要,它代表记录器的包的形式,有一定的包含关系,试验表明
  2-1:当定义的logger的name同名时,只有最后的那一个才能正确的打印日志
  2-2:当对应的logger含有包含关系时,比如:name=test.log4j.test8 和 name=test.log4j.test8.UseLog4j,则2-1的情况是一样的
  2-3:logger的name表示所有的包含在此名的所有记录器都遵循同样的配置,name的值中的包含关系是指记录器的名称哟!注意啦!
  3:logger中定义的level和appender中的filter定义的level的区间取交集
  4:如果appender中的filter定义的 levelMin > levelMax ,则打印不出日志信息
  -->
 <!--指定logger的设置,additivity指示是否遵循缺省的继承机制 -->
 <logger name="test.log4j.test8.UseLog4j_" additivity="false">
  <level value ="ERROR"/>
  <appender-ref ref="rollingFile"/>
 </logger>
 <!-- 根logger的设置-->
 <root>
  <level value ="info"/>
  <appender-ref ref="ConsoleAppender"/>
  <appender-ref ref="rollingFile"/>
 </root>
</log4j:configuration>

项目结构如下:

一切准备就绪之后,项目一旦启动你就能在你规定的输出位置找到你每天或者每个小时的日志文件,log配置文件还可以进行拓展配置每个文件的大小以及文件出错时的回滚事宜,这里不做赘述。

以上这篇基于web项目log日志指定输出文件位置配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot项目打包成war包并部署在tomcat上运行的操作步骤

    SpringBoot项目打包成war包并部署在tomcat上运行的操作步骤

    我们开发 SpringBoot 项目有时我们会需要打包成 war 包,放入外置的 Tomcat 中进行运行,或者使用工具idea直接启动,便于开发调试,本文给大家分享SpringBoot项目打包成war包并部署在tomcat上运行的操作步骤,感兴趣的朋友一起看看吧
    2024-03-03
  • Spring 定时任务@Scheduled 注解中的 Cron 表达式详解

    Spring 定时任务@Scheduled 注解中的 Cron 表达式详解

    Cron 表达式是一种用于定义定时任务触发时间的字符串表示形式,它由七个字段组成,分别表示秒、分钟、小时、日期、月份、星期和年份,这篇文章主要介绍了Spring 定时任务@Scheduled 注解中的 Cron 表达式,需要的朋友可以参考下
    2023-07-07
  • JavaSE反射、枚举、lambda表达式常用方法举例

    JavaSE反射、枚举、lambda表达式常用方法举例

    这篇文章主要介绍了JavaSE反射、枚举、lambda表达式常用方法的相关资料,反射允许在运行时检查和操作类、方法和属性,枚举提供了一种更安全和优雅的方式来定义常量,而Lambda表达式则简化了函数式接口的实现,需要的朋友可以参考下
    2024-12-12
  • Java使用XML与注解方式实现CRUD操作代码

    Java使用XML与注解方式实现CRUD操作代码

    MyBatis提供了灵活的配置和使用方式,使得数据库操作更加简洁和高效,通过本文,我们介绍了如何使用MyBatis框架,通过XML映射文件和注解两种方式来实现数据库的增删改查操作,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • IntellIJ IDEA显示内存不足的完美解决方法

    IntellIJ IDEA显示内存不足的完美解决方法

    IntelliJ IDEA是一款广泛使用的Java集成开发环境,以其强大的功能和高效的编码体验深受开发者喜爱,然而 在我们导入大项目时, IntellIJ Idea 向我们抛出了一个 OutOfMemoryError 内存不足, 所以本文给大家介绍了IntellIJ Idea显示内存不足的完美解决方法
    2025-03-03
  • 一文详解MVCC的执行原理

    一文详解MVCC的执行原理

    MVCC是一种并发控制机制,用于解决数据库并发访问中,数据一致性问题,它通过在读写操作期间保存多个数据版本,以提供并发事务间的隔离性,本文将和大家简单聊聊MVCC的执行原理,需要的朋友可以参考下
    2023-12-12
  • GC调优实战之过早提升Premature Promotion

    GC调优实战之过早提升Premature Promotion

    这篇文章主要为大家介绍了GC调优实战之过早提升Premature Promotion
    2022-01-01
  • IDEA中properties与yml文件的转变方式

    IDEA中properties与yml文件的转变方式

    文章介绍了如何在IntelliJ IDEA 2021.1.1中安装和使用ConvertYAMLandPropertiesFile插件进行YAML和Properties文件之间的转换,安装步骤包括导航到设置、安装插件、找到并安装插件等,插件支持从Properties文件转换为YAML文件,但转换过程中会丢失注释
    2024-12-12
  • IDEA中的pom.xml文件无法识别问题及解决

    IDEA中的pom.xml文件无法识别问题及解决

    这篇文章主要介绍了IDEA中的pom.xml文件无法识别问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java实现顺序栈原理解析

    Java实现顺序栈原理解析

    这篇文章主要介绍了Java实现顺序栈原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论