初识log4j与ssm整合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37358860/article/details/89375123

初识log4j与ssm整合

一 . log4j 与 日志

  • 什么是log4j

        Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

  • 什么是日志

        日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。

        在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的消息的文件。记录是保持日志的行为。在最简单的情况下,消息被写入单个日志文件。 许多操作系统,软件框架和程序包括日志系统。广泛使用的日志记录标准是在因特网工程任务组(IETF)RFC5424中定义的syslog。 syslog标准使专用的标准化子系统能够生成,过滤,记录和分析日志消息。

  • 我自己的理解

        以上是百度来的解释,看起来太高大上了,我说下我自己的理解.日志,我认为就是流水账日记,你做的系统都干了什么,你想知道,你不能直接问它吧,你也不可能天天盯着它看,况且你也看不过来,那么,你在做系统的时候你就得教会他写日记,配置日志,就是你教它怎么写这个日记.日记里都写什么,写完的日记放在哪里,方便你随时检查.

        那么log4j我理解为就是一个帮助你教会系统写日记的一个工具,我们想让我们的系统自己能够写日记,那么我们就可以用log4j这个工具.

二 . log4j与ssm整合

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
  • 在srm/main/resources文件夹下创建log4j.properties的配置文件,本示例用的是log4j.properties配置,另外还有xml配置,请自行学习.下面是比较简单的日志配置,只配置了将日记写到控制台,和D盘下的log4j.log文件,每个配置是什么意思都写在注解中了,更详细的配置请参考:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html
# Root logger option 这个是log4j的根配置,必不可少的,其中DEBUG是日志的级别(ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF),
# 什么意思呢?拿个栗子,你是一家公司老总,财务支出的时候总得跟你说一声吧,那总不能支出一块钱都得跟你汇报吧,那你不是忙死了,所
# 以呢,你就定个级别,你告诉财务支出100万以上告诉我就行了,过两天你发现根本就没有100万以上的支出,你又跟财务说10万以上就得告诉我,
# 结果又过两天你发现10万以上的支出也很少,但是账户的钱确少的很多,你又跟财务说1万以上的就得告诉我,又过了两天你要对公司的财务支出
# 全部做到心中有数,你告诉财务1块钱的支出你也得告诉我.这就是级别,1<1万<10万<100万).系统将什么级别的信息记录下来,你就设置对应的级别.
# stdout(百度翻译:标准输出),自行测试一下,不加上它的话,控制台输出不了内容,file将日志的信息以文件的形式保存.
log4j.rootLogger=DEBUG, stdout, file
 
# Redirect log messages to console  使用org.apache.log4j.ConsoleAppender类输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
# 相当于你用System.out.print()在控制台打印,如果配置成System.err,那么就相当于你用System.err.println()进行打印(都是红色),但是不一定换行,我没试过
log4j.appender.stdout.Target=System.out
# 使用org.apache.log4j.PatternLayout类设置输出的格式
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 配置输出的格式,最后一个%m%n 配置log4j以添加换行符.%L设置从记录请求的行号.
# %c{1}引用通过 getLogger()设置的日志记录名称.%-5p设置日志记录优先级,如DEBUG或ERROR.你可以自己打印出来之后再试着去掉一些配置看看效果
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
# Redirect log messages to a log file, support file rolling.  使用org.apache.log4j.RollingFileAppender类输出文件,
# 这个类可以追加文件,什么意思?按我们的配置举例,MaxFileSize=5MB,当你的日志文件大小达到5mb的时候,他会在重新创建一个文件,最多创建多少个呢?
# MaxBackupIndex=10,配置是多少就创建多少.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\log4j.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  • 有的博客说ssm项目整合log4j需要配置监听,但是我这个没有配置,可能是版本问题,这个不太了解.以后遇到再说,下面代码是其它博客说在web.xml中配置监听和指定配置文件的位置的.我没有用.如果你的项目配置不起作用可以尝试一下.
<context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
    </context-param>
 
    <!--log4j配置监听-->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
--------------------- 
作者:LoveM生活美好 
来源:CSDN 
原文:https://blog.csdn.net/gjm15652957971/article/details/79174048 
版权声明:本文为博主原创文章,转载请附上博文链接!

三. 如何在项目中使用log4j

  • 日志根据自己项目实际需求定义需要记录什么,我这里只写一个最简单的例子.
  • 在首页创建一个请求,发送到控制器,能够跳转到一个页面就可以.在控制器中声明日志操作类,在控制器方法中记录跳转操作.
  • 然后查看控制台是否打印日志信息,是否生成日志文件.下面是控制器中的代码.
package com.lgf.csdn_lesson003ssm_log4j.testLog4j.controller;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 *  描述: 跳转登录页,测试日志类能否记录登录操作
 *  作者: 郎国峰 
 *  时间: 2019年4月18日 上午10:49:21
 */
@Controller
@RequestMapping("test")
public class LoginController {
	//声明日志操作类Logger
	static Logger log = Logger.getLogger(LoginController.class.getName());
	@RequestMapping("logintest")
	public String testLogin() {
		//记录登录操作
		log.debug("跳转登录页");
		return "login";
	}
}

在这里插入图片描述

博客仅做学习交流使用,并非课件,仁者见仁,不喜勿喷.如果您觉得有用,请点个赞,谢谢!

源码地址: https://github.com/TheBiggestMouse/csdn_lesson003ssm_log4j.git

猜你喜欢

转载自blog.csdn.net/qq_37358860/article/details/89375123
今日推荐