使用log4j输出日志
今天在倒腾log4j,其实蛮简单的。
一、首先是下载log4j的jar包。
二、将下载的jar包添加到web工程的WEB-INF/lib包下

三、在src/config包下新建log4j.properties,这个是log4j的配置文件,在里面添加如下配置代码
###set log level ###
log4j.rootLogger = DEBUG,Console,D,E ### CONSOLE ###
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### DEBUG ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${webapp.root}/WEB-INF/logs/debug.log
log4j.appender.file.DatePattern=yyyy-MM-dd-HH-mm'.log'
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### ERROR ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ${webapp.root}/WEB-INF/logs/error.log
log4j.appender.file.DatePattern=yyyy-MM-dd-HH-mm'.log'
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
上面这段配置表示输出level等级在DEBUG之上的信息,并且将信息输出到控制台和对应路径的log文件中。
其中DEBUG信息输出到${webapp.root}/WEB-INF/logs/debug.log ,ERROR信息输出到${webapp.root}/WEB-INF/logs/error.log。
这里的${webapp.root}表示一个相对路径,你可以通过System.getProperty("webapp.root") ;进行查看。
一般为你的tomcat路径\webapps\项目名。比如我的为:D:\DevelopTools\apache-tomcat-8.0.36\webapps\ssm
四、在web.xml中设置log4j配置文件的路径
里面添加如下代码
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
<!-- 设置log4j配置文件的路径 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<!-- <param-value>classpath*:config/log4j.properties</param-value> -->
<param-value>classpath:config/log4j.properties</param-value>
<!-- <param-value>WEB-INF/log4j.properties</param-value> -->
</context-param>
<!-- 3000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;这样便于日志存放位置的改变 -->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>3000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
五、使用验证
@Controller
@RequestMapping("/user")
public class UserController { @Autowired
private UserService userService;
protected Logger log = Logger.getLogger(UserController.class);
@RequestMapping("/findAllUser")
public String findAllUser(HttpServletRequest request){
List<User> listUser = userService.findAllUser();
request.setAttribute("listUser",listUser);
log.debug("服务器启动了,log4j开始工作了");
log.error("服务器启动了,log4j开始工作了");
return "/allUser";
}
}
注意事项:
如果你想将log日志输出到其他路径也可以。
新建一个类实现ServletContextListener接口。在里面使用System.setProperity方法来设置路径
public class Log4jListener implements ServletContextListener{
public static final String log4j_dir_key = "dir";
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.getProperties().remove(log4j_dir_key);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
String dir = sce.getServletContext().getRealPath("/logs");
System.setProperty(log4j_dir_key,dir);
}
}
然后在刚才的web.xml中添加listener
<listener>
<listener-class>com.util.Log4jListener</listener-class>
</listener>
最后在log4j的配置文件中,将输出路径修改为
log4j.appender.D.File = ${dir}/WEB-INF/logs/debug.log
此时你的log文件就会存在你设定的路径/WEB-INF/logs下了。
使用log4j输出日志的更多相关文章
- log4j输出日志乱码(转)
log4j日志文件乱码问题的解决方法 log4j日志文件中文乱码处理方法 log4j 控制台和文件输出乱码问题解决 写在前面,第三篇文章中将原因解释的最清楚,为什么设置为UTF-8或者GBK就生效了, ...
- log4j输出日志到数据库中
1.log4j配置 ###----------------- appender:DATABASE_LOG -----------------#指定输出日志的等级和日志输出范围log4j.logger. ...
- log4j输出日志到flume
现需要通过log4j将日志输出到flume,通过flume将日志写到文件或hdfs中 配置flume-config文件 将日志下沉至文件 a1.sources = r1 a1.sinks = k1 a ...
- log4j输出日志到文件
输出端Appender Appender用来指定日志信息输出到哪个地方,可以同时指定多个输出目的地.Log4j允许将信息输出到许多不同的输出设备中,一个log信息输出目的地就叫做一个Appender. ...
- MyBatis3-配置使用log4j输出日志
配置步骤: 1.POM的依赖引入 <!-- log4j --> <!-- https://mvnrepository.com/artifact/log4j/log4j --> ...
- Spring boot配置log4j输出日志
1. pom.xml文件中配置parent,版本选定[1.2.5.RELEASE] 关于为什么要选这个版本:我尝试使用[1.4.1.RELEASE],但该版本库里没有[spring-boot-star ...
- log4j输出日志到不同文件
1.先看log4j的配置文件 log4j.properties 没有此文件就在根目录下创建一个: log4j.rootLogger=INFO,R,Client log4j.appender.R=org ...
- Hibernate 使用log4j输出日志
jar包不能少:F:\jars\slf4j-api-1.7.5.jar F:\strutsWsold\slf4j-1.7.5\slf4j-1.7.5\slf4j-log4j12-1.7.5.j ...
- []jnhs]日志套件log4j输出到控制台和文件
log4j的xml配置文件改为 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j: ...
随机推荐
- '0','\0',NULL,EOF的区别
要看是不是一个东西,打印一下即可 printf("%d %d %d %d\n",'0','\0',NULL,EOF); 输出: 48 0 0 -1 结论: '\0'与NULL 都是 ...
- ios 虚拟机中文件下载路径
每个人mac上的路径会有不同,你可以打印出你文件下载存放的路径,然后拷贝一下,再单击桌面空白处,最上面的导航栏上有个“前往”,然后找到“前往文件夹”,粘贴一下,就可以找到了.
- Eclipse中使用Maven创建项目 (转)
转自:http://www.gogogogo.me/development/eclipse-maven-webapp.html Apache Maven是一个优秀的项目构建和管理工具,许多 ...
- poi对EXCEL的操作(一)
(原创自己这段时间对poi的研究心得) 一.基础的对象 1.wookbook工作簿 创建工作簿 wookbook XSSFWorkbook类的构造方法 XSSFWorkbook ...
- 【Java】将字符串转化为整数
前几天面试遇到这个问题:在Java中如何将字符串转化为整数,当时too young too naive,随便回答了一下.今天跑去看Java源码中paresInt函数的写法,Oh my god!其实不看 ...
- 使用Skyworking 作全链路api调用监控,Integration of Skyworking, auditing the whole chain circuit.
Applicable scenario: Structure Map ~ Skywalking uses elasticsearch to store data, don't mistake elas ...
- Python3 re模块正则表达式中的re.S
在Python的正则表达式中,有一个参数为re.S.它表示"."(不包含外侧双引号,下同)的作用扩展到整个字符串,包括"\n".看如下代码: import re ...
- linux驱动开发:用户空间操作LCD显示简单的图片【转】
转自:http://blog.csdn.net/changliang7731/article/details/53074616 上一章我们简单介绍了LCD的一些基本原理.当然更深奥的还有,比如gamm ...
- netif_receive_skb->__netif_receive_skb_core
在设备驱动收包之后,会通过netif_receive_skb将收取的包,按照注册的协议回调,传递到上层进行处理: /* 将skb传递到上层 */ static int __netif_receive_ ...
- 集合框架之Set学习
前言: 1.何为框架:可以理解为一个基础结构,在基础结构上进行进一步开发会变得很方便. 2.三种集合类型:集合(Set) :元素无序不可重复: 列表(List) :元素有序可重复: 映 ...