为Java项目添加slf4j的log日志

简介: 我们今天要给之前编码的一个maven的web项目提供slf4j的日志,这样所有的日志信息可以显示到项目的某个目录的log文件中。项目的样子如下图:首先配置pom,我也不知道下面的内容是否必要 org.

我们今天要给之前编码的一个maven的web项目提供slf4j的日志,这样所有的日志信息可以显示到项目的某个目录的log文件中。
项目的样子如下图:
_
首先配置pom,我也不知道下面的内容是否必要

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.3.10.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.8.0-beta0</version>
</dependency>

spring5以后取消了对于Log4jConfigListener的支持,或者说spring的web那个包中Log4jConfigListener的类已经作废了,所以需要使用spring4版本的类库。
我们的项目就可以配置slf4j了。
slf4j要求我们首先提供一个名为log4j.properties的配置文件其内容如下:

# 日志输出级别(INFO)和输出位置(stdout,R)
log4j.rootLogger=INFO, stdout , R

# 日志输出位置为控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

# 日志输出位置为文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\OxygenWork\\WindDevelop\\logs\\WindLog.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

# 定义相应包路径下的日志输出级别
log4j.logger.com.alibaba=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
 
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.logicalcobwebs=WARN

上述配置内容中log4j.appender.R.File的值表示最终日志内容保存到那个log文件中。
上述这个log4j.properties配置文件需要被配置到这个项目的classpath下
_
上述位置实际上是java源文件的位置,但是当你将文件拷贝到这个位置以后,eclipse会帮助你将文件部署到class的根目录,如下图:
_
好的,我们现在拥有了配置文件,我们需要将slf4j的配置文件,配置到web.xml中,让它起作用。

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--配置slf4j-->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>
   <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>
  <!--下面两个filter和servlet与本主题无关-->
  <filter>
      <filter-name>WindFilter</filter-name>
      <display-name>WindFilter</display-name>
      <description></description>
      <filter-class>net.web.WindFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>WindFilter</filter-name>
      <url-pattern>/yes/enterpage.jsp</url-pattern>
  </filter-mapping>
  
  <servlet>
      <servlet-name>WindServlet</servlet-name>
      <display-name>WindServlet</display-name>
      <description></description>
      <servlet-class>net.web.WindServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>WindServlet</servlet-name>
      <url-pattern>/yes/enterpage.jsp</url-pattern>
  </servlet-mapping>
  
</web-app>

全都配置好了,我们来测试一下

package net.infopack;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogTest {
    
    final static Logger logger = LoggerFactory.getLogger(LogTest.class);
    
    public void fLogCheck(String str) {
        
        String s1 = str + "shut the fk up!";
        logger.info("测试:{}", s1);
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        LogTest lt1 = new LogTest();
        lt1.fLogCheck("Paul George,");
    }

}

_
运行的结果,console和log文件
_
_
上述

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
17天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
73 1
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
1天前
|
JavaScript Java 测试技术
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
21 3
|
9天前
|
运维 安全 Ubuntu
`/var/log/syslog` 和 `/var/log/messages` 日志详解
`/var/log/syslog` 和 `/var/log/messages` 是Linux系统的日志文件,分别在Debian和Red Hat系发行版中记录系统事件和错误。它们包含时间戳、日志级别、PID及消息内容,由`rsyslog`等守护进程管理。常用命令如`tail`和`grep`用于查看和搜索日志。日志级别从低到高包括`debug`到`emerg`,表示不同严重程度的信息。注意保护日志文件的安全,防止未授权访问,并定期使用`logrotate`进行文件轮转以管理磁盘空间。
19 1
|
9天前
|
监控 数据可视化 安全
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
环境实时数据、动态监测报警,实时监控施工环境状态,有针对性地预防施工过程中的环境污染问题,打造文明生态施工,创造绿色的生态环境。
8 0
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
|
10天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
23 2
|
10天前
|
Ubuntu Linux 网络安全
/var/log/auth.log日志详解
`/var/log/auth.log`是Linux(尤其是Debian系如Ubuntu)记录身份验证和授权事件的日志文件,包括登录尝试(成功或失败)、SSH活动、sudo使用和PAM模块的操作。登录失败、SSH连接、sudo命令及其它认证活动都会在此记录。查看此日志通常需root权限,可使用`tail`、`less`或`grep`命令。文件内容可能因发行版和配置而异。例如,`sudo tail /var/log/auth.log`显示最后几行,`sudo grep &quot;failed password&quot; /var/log/auth.log`搜索失败密码尝试。
39 8
|
11天前
|
SQL Java Go
java项目超市购物管理系统
java项目超市购物管理系统
|
11天前
|
Java
java项目日历表
java项目日历表
|
1天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)