基于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日志指定输出文件位置配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 利用Log4j将不同Package的日志输出到不同文件的方法

    前言 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程的处理日志: 外部接口访问的参数.返回结果等接口日志: Service访问数据库产生的SQL日志: 这其中,消息日志和后台线程的日志数据量非常庞大,如果所有日志打印在一个文件中,使用tail -f log.log文件,会发现日志在快速的滚动,根本无法查看甚至定位某一个具体的SQL或者Servi

  • java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    log4j输出多个自定义日志文件 如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: 复制代码 代码如下: log4j.rootLogger=DEBUG, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layo

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

    首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置. <context-param> <param-name>webAppRootKey</param-name> <param-value>amt.root</param-value> </context-param> 然后要定义项目log配置文件的路径以及log4j监听器 <contex

  • Log4j按级别输出日志到不同文件的实现方法

    如下所示: log4j.rootLogger=info,stdout,info,debug,warn,error log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%

  • iOS中解决Xcode9的Log日志无法输出中文的问题小结

    问题描述 Xcode的Log日志输出中文的问题,一般都是重写NSArray,NSDictionary的- (NSString *)descriptionWithLocale:(id)locale;方法进行处理,最近升级到Xcode9会后发现原来的处理逻辑也无法满足输出中文的需求,后台返回的状态描述涉及到中文的都变成了Unicode编码,其实这是重写的方法失效的问题,因为Xcode默认输出NSArray,NSDictionary的中文都是Unicode编码 正确的解决方案如下, 创建NSArray

  • Java Web项目部署在Tomcat运行出错与解决方法示例

    本文实例讲述了Java Web项目部署在Tomcat运行出错与解决方法.分享给大家供大家参考,具体如下: 1.在部署Java Web项目的过程中,启动Tomcat出现报错提示 具体报错如下: Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config. The configuration may be corrupt or incomplete. 元素类型 "H

  • C#把dll分别放在指定的文件夹的方法步骤

    目录 第一种,配置方法. 第二种,代码方法 C#客户端程序,生成后是一个exe,如果带有大量的dll,那么dll和exe会混乱在一起,看起来非常混乱,我们可以建立一个文件夹,把dll放进去,这样看起来就非常的清晰美观. 一共有二种方法 第一种,配置方法. 1.我们建立一个winform程序,对2个dll分别引用,调用里面的方法 生成后的文件是这样的 2.打开App.config文件夹,其中dll和dll/2相当于文件夹 <?xml version="1.0" encoding=&

  • linux中tar打包指定路径文件的实现方法

    压缩: tar czvf /data/backup/test.tar.gz /data/a/b/directory 解压: cd /data/test tar xzvf /data/backup/test.tar.gz 问题是,解压后的文件,在/data/test/data/a/b/directory里面 要想解压在当前目录路径. 这样写就可以解决了 tar czvf /data/backup/test.tar.gz /data/a/b/directory 改成 tar czvf /data/b

  • 基于Spring Boot不同的环境使用不同的配置方法

    spring 多文件配置: 1.properties文件 2.YAML文件 一.properties文件 在 Spring Boot 中, 多环境配置的文件名需要满足 application-{profile}. properties的格式, 其中{profile}对应你的环境标识, 如下所示. • application-dev.properties: 开发环境. • application-test.properties: 测试环境. • application-prod.propertie

  • SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法

    简介: Springboot使用Mybatis&Mybatis-plus 两者文件映射配置略有不同,之前我用的是Mybatis,但公司用Mybatis-plus:自己新建了一个Springboot项目,代码运行时一直报错not found not found,明明配置了mybatis相关信息的扫描路径,但是就是not found:检查修改了很多地方但都是无用功,最终发现是Plus惹的祸. 1.使用Mybatis <dependency> <groupId>org.mybat

  • Vue项目打包部署到iis服务器的配置方法

    一 将Vue项目打包 切换到项目目录下,输入cnpm run build 打包 等待打包完成 二 URL 重写 访问我们的一个url 原因是vue不是根据项目目录的地址访问的,是根据vue-router转发路由访问url,在这里我们应该进行url rewrite url write的方式有两种,一种是在iis下载url rewrite工具配置规则 另一种是配置web.config文件,我用的是第二种 web.config内容 <?xml version="1.0" encodin

  • 基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序

    目录 前言: 一.设置方法 ​1.applicationUrl属性​ ​2.环境变量​ ​3.命令行参数​ ​4.UseUrls方法​ .NET5版本 .NET6版本 ​5.UseKestrel方法​ ​6.WebApplication.Urls.Add方法​ ​7.appsettings.json文件​ 二.优先级 三.结论 前言: 上次,我们讨论了如何通过配置或代码方式修改启动地址:<​ ​ASP.NET Core启动地址配置方法及优先级顺序​​>.不过是基于 .NET 5 版本的. 由于

随机推荐