不使用框架的web项目中配置log4j

在不使用框架的时候,一般使用监听器或者Servlet来初始化log4j进行启动,这里我使用Servlet,代码入下:

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;

public class Log4JInitServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public Log4JInitServlet() {
        super();
    }

    public void init(ServletConfig config) throws ServletException {

        System.out.println("正在初始化 log4j日志设置信息");
        String log4jLocation = config.getInitParameter("log4j-properties-location");
        ServletContext sc = config.getServletContext();

        if (log4jLocation == null) {
            System.err.println("没有找到log4j-properties-location, 所以使用 BasicConfigurator初始化");
            BasicConfigurator.configure();
        } else {
            String webAppPath = sc.getRealPath("/");
            String log4jProp = webAppPath + log4jLocation;
            File yoMamaYesThisSaysYoMama = new File(log4jProp);
            if (yoMamaYesThisSaysYoMama.exists()) {
                System.out.println(log4jProp + "初始化日志设置信息");
                PropertyConfigurator.configure(log4jProp);
            } else {
                System.err.println(log4jProp+ " 文件没有找到, 所以使用 BasicConfigurator初始化");
                BasicConfigurator.configure();
            }
        }
        super.init(config);
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
    }

}

在web.xml中修改一下:

<servlet>
        <servlet-name>Log4JInitServlet</servlet-name>
        <servlet-class>com.scme.filter.Log4JInitServlet</servlet-class>
        <init-param>
            <param-name>log4j-properties-location</param-name>
            <param-value>/WEB-INF/log4j.properties</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup> <!-- 设置加载顺序-->
    </servlet>

在  WEB-INF/ 目录下添加log4j.properties文件,例子如下:

log4j.rootLogger = INFO,stdout,D 

log4j.appender.stdout = org.apache.log4j.ConsoleAppender   
log4j.appender.stdout.Target = System.out  //设置为控制台输出,级别为默认的INFO
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n  

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.D.File =../jump_log/logs.log  //输出到文件
log4j.appender.D.DatePattern ='_'yyyy-WW'.log'  //每周产生一个新文件
log4j.appender.D.Append = true  
log4j.appender.D.Encoding=UTF-8  //设置日志文件编码
log4j.appender.D.Threshold = INFO   
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 

 附:打印参数信息

   %m   输出代码中指定的消息
  %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日 221028921 
  %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 

 

转载于:https://www.cnblogs.com/meetzy/p/7764958.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一款非常优秀的Java web开发框架,其内置了很多强大的特性,比如自动配置、快速开发等。在开发过程,我们经常需要使用日志框架来记录系统运行过程的信息、警告和错误等。而Log4j2是Apache的一个开源项目,是Log4j的升级版,具有更好的性能和更丰富的功能。 下面是使用Log4j2作为Spring Boot项目的日志框架的详细配置文件: 1. 首先,需要在pom.xml文件添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ``` 2. 在src/main/resources目录下新建log4j2.xml文件,内容如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %highlight{%-5level} %logger{36} - %msg%n"/> </Console> <RollingFile name="file" fileName="logs/myapp.log" filePattern="logs/myapp-%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <DefaultRolloverStrategy max="20"/> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="console"/> <AppenderRef ref="file"/> </Root> </Loggers> </Configuration> ``` 以上配置文件,定义了两个Appender,一个是Console Appender,用于将日志输出到控制台;另一个是RollingFile Appender,用于将日志输出到文件,并支持文件滚动。其,RollingFile Appender使用了SizeBasedTriggeringPolicy来控制文件大小,以及DefaultRolloverStrategy来控制文件滚动。最后,在Loggers配置了Root Logger,将日志输出到Console和RollingFile Appender。 3. 在Spring Boot的application.properties文件配置日志级别: ```properties logging.level.root=info ``` 以上配置将Root Logger的日志级别设置为info,也可以根据需要设置其他Logger的日志级别。 4. 在代码使用Log4j2输出日志: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyApp { private static final Logger logger = LoggerFactory.getLogger(MyApp.class); public static void main(String[] args) { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); } } ``` 使用上述配置后,日志将会按照配置输出到控制台和文件。如果需要更改日志输出的路径,可以在log4j2.xml文件修改RollingFile Appender的fileName属性。如果需要更改日志文件的格式,可以修改PatternLayout的pattern属性。如果需要设置其他的Appender和Logger,可以在log4j2.xml文件进行配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值