Java Web动态配置log4j

导入log4j的jar包,

在web.xml中做如下配置

  <!-- Log4j Configuration -->
    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>myapplication.root</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value><!-- 重新加载log4j配置的间隔时间 ms -->
    </context-param>

在WEB-INF下建立文件log4j.properties

内容如下

log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${user.home}/myapplication.log
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

可根据不同的需求进行不同的配置。

在web页面上做个选择logging level的页面,选择logging level,传入servlet,

    //查询logging level,并传到web页面  @RequestMapping(value="/logging_view", method = RequestMethod.GET)
    public String toLoggingView(HttpServletRequest request,Model model){
        Properties props = new Properties();
        try {       //读取log4j.properties文件的内容
            String path = SystemController.class.getClassLoader().getResource("").toURI().getPath();
            InputStream in = new BufferedInputStream(new FileInputStream(
                    path+"../log4j.properties"));//这个是log4j.properties的文件路径,根据自己的servlet的path自行配置
            props.load(in);
            String value = props.getProperty("log4j.rootLogger");
            logger.debug("log4j.rootLogger键的值是:"+ value);
            model.addAttribute("rootLogger", value);
            in.close();
        } catch (URISyntaxException e) {
            logger.error("SystemController : logging_view : URISyntaxException:"+e);
        } catch (FileNotFoundException e) {
            logger.error("SystemController : logging_view : FileNotFoundException:"+e);
        } catch (IOException e) {
            logger.error("SystemController : logging_view : IOException:"+e);
        }
        return SessionHandler.verifySession(request, "logging_view");
    }
    //获取web页面传的数据,设置logging level
    @RequestMapping(value="/setLoggingLevel", method = RequestMethod.POST)
    public String setLoggingLevel(@RequestParam String rootLogger, @RequestParam String loggerLevel,
            HttpServletRequest request, Model model){
        RequestContext requestContext = new RequestContext(request);
        String[] loggers = rootLogger.split(",");
        loggers[0] = loggerLevel;
        String logging = "";
        for(int i = 0; i < loggers.length; i++){
            logging += loggers[i]+",";
        }
        logging = logging.substring(0, logging.length()-1);
        Properties props = new Properties();
        try {       //将logging level写入log4j.properties文件
            String path = SystemController.class.getClassLoader().getResource("").toURI().getPath()+"../log4j.properties";
            InputStream in = new BufferedInputStream(new FileInputStream(
                    path));
            props.load(in);
            OutputStream fos = new FileOutputStream(path);
            props.setProperty("log4j.rootLogger", logging);
            props.store(fos,"last update");
            String value = props.getProperty("log4j.rootLogger");
            logger.debug(value);
            //关闭文件
            in.close();
            fos.close();
            List<String> list = new ArrayList<String>();
            list.add(requestContext.getMessage("logging.level"));
            if(value.split(",")[0].equals(loggerLevel)){
                model.addAttribute("msg", requestContext.getMessage("edit.success",list));
            }else{
                model.addAttribute("msg", requestContext.getMessage("edit.failed",list));
            }
        } catch (URISyntaxException e) {
            logger.error("SystemController : logging_view : URISyntaxException:"+e);
        } catch (FileNotFoundException e) {
            logger.error("SystemController : logging_view : FileNotFoundException:"+e);
        } catch (IOException e) {
            logger.error("SystemController : logging_view : IOException:"+e);
        }
        return "msg";
    }

这样就完成了,log4j的其他配置,一样按照上面的方法做就行。

时间: 2024-10-05 01:30:32

Java Web动态配置log4j的相关文章

java Web应用配置log4j日志记录

第一步:首先建立一个WEB工程,去log4j官网下log4j的JAR包导入到工程的lib目录下 第二步:在src目录下建一个log4j.properties 文件,文件命名可以由自己,只是记加载时候和这里名字一致就行: log4j.properties  里边的内容如下: ### set log levels ### log4j.rootLogger = debug,stdout,E log4j.appender.stdout = org.apache.log4j.ConsoleAppender

基于JMX动态配置Log4J日志级别

先来看比较low的修改日志级别的方式,在写程序里面. http://blog.gssxgss.me/java%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8A%A8%E6%80%81%E6%94%B9%E5%8F%98%E6%97%A5%E5%BF%97%E7%BA%A7%E5%88%AB/ 再来通过JMX的方法动态修改程序的日志级别. https://blog.csdn.net/z2007130205/article/details/23910431 package com.m

windows + myeclipse 调试 linux + tomcat 的java web服务 配置方式

一.linux tomcat配置和启动 1.catalina.sh第一行添加 declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000" 2.启动JPDA(这是tomcat下的启动方式,别的服务器可能会不一样,但道理是一样的) ./catalina.sh jpda start 3.启动web服务 ./start.sh 二.在windows端的myecli

Java web.xml 配置技巧—动态欢迎页地址--欺骗tomcat

我们的Java Web项目在配置web.xml 欢迎页地址默认是index.html .index.jsp ,不知道有人注意过没有,如果我要配置成/index/user.action  或者 /userList.do 什么的怎么办呢?你可能觉得直接配置就OK了,我告诉你不行.如果可以,你可以忽略本方法.下面讲讲如果不能配置动态地址,怎么办. 配置如下: <welcome-file-list> <welcome-file>/user/index.shtml</welcome-f

java web中使用log4j

测试log4j的项目结构 Log4j.properties的路径为    src/config/log4j Log4j.properties文件的内容 下面定义日志输出级别是 INFO,并且配置了2个输出目的地,一个是A3,一个是console log4j.rootLogger = INFO,A3,CONSOLE //日志最低的输出级别 log4j.appender.A3.Threshold=INFO log4j.appender.A3.encoding=UTF-8 //每天产生一个文件Dail

eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序

一.新建maven的java工程 1.eclipse里file-new-other,选择maven Project 2.选中 Use default Workspace location,然后 next 3.选择maven-archetype-quitstart,然后next 4.填入工程信息,然后finish 6.新建好的工程结构如图 7.将test下和java下自动生成的java类删除,右键build-path选择好jdk版本,整个工程就建好了. 二.配置log4j 1.将工程目录调整成下图

java web.xml配置详解

1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Load

Java Web环境配置

准备工作 jdk-8u241 apache-tomcat-9.0.31-windows-x64.zip Eclipse IDE for Enterprise Java Developers 关于版本选择 满足上表最后一栏要求的任何稳定Java版本都支持每个版本的Tomcat. 怎样查看我的电脑上有没有jdk cmd输入java -version若出现如下图所示则说明电脑已有jdk: 若出现下图则表明还没有安装jdk. 怎样查看我的电脑有没有tomcat cmd输入catalina若出现如下图所示

Eclipse创建java web工程配置Tomato和JDK

在学习AJAX过程中,还用Intellij就有点老旧了,这是后装个Eclipse时,发现这个配置也很头疼,现在就叫你如何创建一个web工程,同时叫你配置Eclipse. 一.创建一个web工程 1.打开"File"-"New"-选择Dynamic web Project 单击下一步. 2.出现工程设定窗口中,设定工程的名字(对应工程的名字)和Dynamic web module version(版本),我们用的是最新的版本,tomacat8对应的是3.1,tomac