基于ssm项目:

1.导入log4j、slf4j相关jar包

commons-logging-1.1.3.jar、log4j-1.2.12.jar、slf4j-api-1.6.6.jar、slf4j-log4j12-1.6.6.jar

2.设置属性文件log4j.properties放置在/WEB-INF/conf/log4j.properties

# DEBUG,INFO,WARN,ERROR,FATAL
LOG_LEVEL=INFO log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
#工作空间的catalina下项目中D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\test4\logs
#log4j.appender.FILE.File=${test2.root}/logs/test4.log
#工作空间的catalina下temp中D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\logs
log4j.appender.FILE.File=${catalina.base}/logs/test6.log
log4j.appender.FILE.Encoding=utf-8
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n

3.web.xml中配置log4j监听器,用来加载指定路径下的log4j.properties文件

<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/conf/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>

4.启动项目,项目加载配置文件的日志就会记录在日志文件中

   日志文件的路径在log4j.properties中配置:log4j.appender.FILE.File=${catalina.base}/logs/test6.log
   也可以建立测试类测试:

@RequestMapping("/loginAdmin")
public String login(){
User user = new User();
user.setUsername("aa");
user.setPassword("bb");
Subject subject = SecurityUtils.getSubject() ;
UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(),user.getPassword()) ;
logger.info("登录成功1");
logger.info("--info--");
logger.debug("--debug--");
logger.error("-error-");
logger.warn("--warn--");
System.out.println(System.getProperty("test2.root"));
System.out.println(System.getProperty("Academic.root"));
try {
subject.login(token);
return "index2" ;
}catch (Exception e){
//这里将异常打印关闭是因为如果登录失败的话会自动抛异常
// e.printStackTrace(); return "index" ;
}
}

打印日志内容可在输出的日志文件中查看到。

说明:

使用spring中的Log4jConfigListener有如如下好处: 
   1. 动态的改变记录级别和策略,不需要重启Web应用,如《Effective Enterprise Java》所说。 
   2. 把log文件定在 /WEB-INF/logs/
       而不需要写绝对路径。 
       因为系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了. 
       log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log 
  
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/
,而不是Class-Path。 
   4.log4jRefreshInterval为6000表示开一条watchdog线程每6秒扫描一下配置文件的变化;

项目中log4j的使用的更多相关文章

  1. idea解决springboot项目中log4j漏洞升级问题

    最近阿里云团队发现log4j漏洞,危险级别:严重,相关资讯 https://m.sohu.com/coo/hsdt/506958086_355140 https://www.sohu.com/a/50 ...

  2. Meavn项目中log4j的使用

    两个步骤: 1.在pom.xml中添加: <dependency> <groupId>log4j</groupId> <artifactId>log4j ...

  3. 从零开始学 Java - log4j 项目中的详细配置

    你还会用笔来写字么 我是不怎么会了,有时候老是拿起笔之后不知道这个字怎么写,这时候就会拿起手机去打出来:有时候还会写出来这个字之后越看越不像,这时候就开始怀疑自己的能力了:有时候写出来了一大堆字之后, ...

  4. log4j在javaWeb项目中的使用

    在前边的文章中对log4j的配置文件进行了说明,今天介绍如何在普通的javaWeb项目中使用log4j. 在日常的开发过程中,日志使用的很频繁,我们可以利用日志来跟踪程序的错误,程序运行时的输出参数等 ...

  5. 在java项目中使用log4j的实例

    测试log4j的项目结构 Log4j.properties的路径为    src/config/log4j Log4j.properties文件的内容 下面定义日志输出级别是 INFO,并且配置了2个 ...

  6. 项目中添加Log4J支持

    首先,在项目中的classes 中新建立一个log4j.properties文件即可: 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对Logger.Append ...

  7. java项目中eclipse控制台输出log4j的信息

    最近做的一个hadoop项目中,用MR实现了一个比较复杂的问题,其中的日志信息都是使用的是log4j来处理的.但不知怎么控制台不输出日志信息,只能输出System.out.println()信息,这个 ...

  8. spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

    在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...

  9. log4j java项目中的配置

    第一步你需要 相关的jar包 第二歩你需要一个关于log4j的配置文件 第三歩 你需要一个检测用的java 文件 导入这两个jar包进你的项目中 commons-logging.jar log4j-1 ...

随机推荐

  1. Linux文件查找命令具体解释-which whereis find locate

    原创BLog.转载请注明出处 http://blog.csdn.net/hello_hwc? viewmode=contents which命令 首先查看man which的说明 which - sh ...

  2. systemd服务管理--systemctl常用命令

    转自 :https://m635674608.iteye.com/blog/2359480 1. #systemctl enable crond.service //让某个服务开机启动(.servic ...

  3. [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)

    题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景:尊者神高达很穷,所以他需要跑商来赚钱题目描述:基三的地图可以看做 n 个城市,m ...

  4. [JZOJ 5894] [NOIP2018模拟10.5] 同余方程 解题报告(容斥)

    题目链接: http://172.16.0.132/senior/#contest/show/2523/0 题目: 题解:(部分内容来自https://blog.csdn.net/gmh77/arti ...

  5. POJ 3213 矩阵乘法(优化)

    思路: 1.暴力出奇迹 n=1000 n^3矩阵乘法竟然能卡过...(Tips:不要乱写读入优化,这玩意儿加了超时,不加AC--) 2. 注意题目中的"最多只能有一个地方不一样,," ...

  6. .net中MVC Webapi多参数调用控制器方法

    http://blog.csdn.net/wulex/article/details/71545471 路由 public static void Register(HttpConfiguration ...

  7. CentOS_mysql8.0_错误

    #参考资料 CSND:https://blog.csdn.net/y_server/article/details/78781177 博客园:http://www.cnblogs.com/testwa ...

  8. 51nod 1632 B君的连通

    题目: 这题看起来难,其实这么多概率啥的都是唬人的.甚至连快速幂都不用就可以解. 解法:    n个节点,n-1条边,期望会有一半的边被炸毁(因为总体概率就是50%). 即(n-1)/2条边被炸毁,这 ...

  9. String Comparison(C#)

    When comparing programmatic strings, you should always use StringComparison.Ordinal or StringCompari ...

  10. 编 写高性能的 SQL 语句注意事项

    1. IS NULL 与 IS NOT NULL不能用 null 作索引, 任何包含 null 值的列都将不会被包含在索引中. 即使索引有多列这样的情况下,只要这些列中有一列含有 null,该列就会从 ...