当前位置:首页 » 网页前端 » web项目log4j2配置
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web项目log4j2配置

发布时间: 2022-10-18 07:01:47

‘壹’ springmvc怎么配置log4j2

增加pom配置,让maven加载log4j包
<!-- log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>

修改web.xml,把log4j加到项目中
<!-- Log4j配置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j/log4j.xml</param-value>
</context-param>
<!-- 加载log4j配置文件 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

根据web.xml配置的路径,在src/main/resource目录下新建log4j/log4j.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %l %m%n" /> </layout> <!--限制输出级别 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMax" value="ERROR" /> <param name="LevelMin" value="DEBUG" /> </filter> </appender> <root> <priority value="debug" /> <appender-ref ref="CONSOLE" /> </root> </log4j:configuration>

经过上面的步骤后,log4j就配置好了,接下来是使用,在DemoController中使用,使用slf4j接口,代替log4j,这样假如以后不用log4j了,用logback等其它日志框架,只需修改配置文件,不需要修改java代码
package com.my1.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoController {
private static Logger logger = LoggerFactory.getLogger(DemoController.class);
@RequestMapping(value = "/toPage1.htm")
public ModelAndView toPage1() {
logger.debug("TEST");
return new ModelAndView("page1");
}
}

由于用了springmvc框架,日志配置好后,会输出很多spring日志,在log4j.xml中,增加一段配置,修改spring包的日志输出级别
<!-- 通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中 -->
<category name="org.springframework">
<priority value="error" />
<appender-ref ref="CONSOLE" />
</category>

log4j的自定义输出格式说明
<!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
<!-- %r 输出自应用启动到输出该log信息耗费的毫秒数 -->
<!-- %c 输出所属的类目,通常就是所在类的全名 -->
<!-- %t 输出产生该日志事件的线程名 -->
<!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” -->
<!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日
22:10:28,921 -->
<!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) -->

log4j的输出方式说明
<!-- Log4j提供的appender有以下几种: -->
<!-- org.apache.log4j.ConsoleAppender(控制台), -->
<!-- org.apache.log4j.FileAppender(文件), -->
<!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
<!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
<!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->

‘贰’ SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印

日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。

1、Log4j2特点

1)核心特点

相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高;并发的特性,减少了死锁的发生。

2)性能测试

2、日志打印之外观模式

每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,增加应用程序代码和日志框架的耦合性。

《阿里巴巴Java开发手册》,其中有一条规范做了‘强制’要求:

SLF4J日志API

Java简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,使用外观模式实现。

1、项目结构

2、不同环境的日志配置

使用最直接的方式,不同环境加载不同的日志配置。

1)开发环境配置

2)生产环境配置

3、Log4j2的配置文件

1、简单的测试程序

2、测试效果图

四、源代码地址

‘叁’ web项目log4j2日志文件无法写入内容

<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

‘肆’ java web项目中关于log4j的运用

1、2只要配置一个,不过:
1配置需要配合使用Spring
2配置需要自己写Log4jInitServlet

其实还有更简单的,只要把log4j.properties放在任意一个src目录下就可以了,什么额外的配置都不需要。

‘伍’ 在Struts2中配置Log4j2,为什么一添加log4j2.xml文件就出错

很有可能是你的项目里面有包冲突,导致项目里面不止一个存在

‘陆’ 非web程序怎么拉起log4j2

在web.xml中添加配置: 下面使用了classpath 参数指定log4j.properties文件的位置,这样log4j的配置文件就不用非要放到src的下面: log4jConfigLocation classpath:config/log4j/log4j.properties 使用spring的监听器,当应用启动时来读取log4j的.

‘柒’ log4j2编程配置Web应用程序问题,怎么解决

Which Servlet container are you using?

2018年10月23日40分28秒

is my configuration correct, the steps which i followed?

2018年10月23日40分28秒

It's correct (I didn't parse the XML, but assuming
it's valid) for your program's logging, but it does nothing for your
Servlet container or any other libraries' logging. You have to bridge
the two.

2018年10月23日40分28秒

am sorry but can you please elaborate a way? am little new to this, and am not that familiar with bridging concept !

2018年10月24日40分28秒

A bridge is an adapter. It adapts one logging
framework to another. Again, I'm not sure what logging framework your
container uses, but if it used Commons Logging, you'd use this. If you
scroll down in that same page, and look in the menu on the left for
Adapter, you should find one appropriate to you.

2018年10月24日40分28秒

actually I have included that already,
log4j-web-2.1.jar this guy for web application in my step 1, if i look
to server start-up log in console(using tomcat 8) this is a line am
seeing "2015-02-05 22:11:55,089 ERROR Console contains an invalid
element or attribute "pattern"". is this something which might be
causing this issue?

‘捌’ log4j2的资源文件具体怎么配置

log4j2和log4j是全局配置的,只能有一个配置文件。 你说的引入另外一个jar,里面的某些方法不想被主工程的log4j2拦截吗? 你可以在Log4j2.xml中,对拦截的包进行单独配置。 如果不能达到需求,建议去log4j2官网文档,十分之详细。

‘玖’ 如何配置log4j2日志记录至数据库

配置log4j2日志记录至数据库


1、建立用于保存日志的数据库表:

sql">CREATETABLE`sys_log`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`level`varchar(32)NOTNULL,
`logger`varchar(100)NOTNULL,
`message`varchar(1000)DEFAULTNULL,
`exception`varchar(10000)DEFAULTNULL,
`date_add`datetimeNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=19DEFAULTCHARSET=utf8mb4;

2、配置 databaseAppender :

<JDBCname="databaseAppender"tableName="sys_log">
<ConnectionFactoryclass="cc.s2m.web.s2mBlog.util.StaticProp"method="getDatabaseConnection"/>
<Columnname="date_add"isEventTimestamp="true"/>
<Columnname="level"pattern="%level"/>
<Columnname="logger"pattern="%logger"/>
<Columnname="message"pattern="%message"/>
<Columnname="exception"pattern="%ex{full}"/>
</JDBC>

3、其中 cc.s2m.web.s2mBlog.util.StaticProp类的getDatabaseConnection方法为获取可用的datasource:

DriverManagerDataSourceds=newDriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://127.0.0.1/s2mBlog?characterEncoding=utf8");
ds.setUsername("root");
ds.setPassword("123456");
returnds.getConnection();


4、指派需要记录的日志,使用 databaseAppender即可:

<loggername="SYSLOG"level="INFO"additivity="false">
<appender-refref="databaseAppender"/>
</logger>