相关疑难解决方法(0)

以编程方式更改Log4j2中的日志级别

我有兴趣以编程方式更改Log4j2中的日志级别.我试着查看他们的配置文档,但似乎没有任何东西.我也试着查看包裹:org.apache.logging.log4j.core.config但是那里的任何东西看起来都没有帮助.

java log4j2

95
推荐指数
7
解决办法
5万
查看次数

是否可以在Tomcat中动态重新加载log4j.xml/log4j.properties文件?

问题是,每当你更改log4j.properties/log4j.xml时,你需要重启tomcat [或者说任何其他服务器].有没有重新加载log4j配置的解决方法?

java tomcat log4j

34
推荐指数
4
解决办法
5万
查看次数

如何在运行时覆盖jar中的log4j属性文件

可能重复:
动态更改log4j日志级别

我有一个包含log4j属性文件的jar文件.我试着用

-Dlog4j.configuration=file:[filename]

使用 java运行时更改属性文件,但它不起作用.我需要在sh文件中执行此操作任何人都可以告诉我这是怎么回事?我也尝试过添加

-Dlog4j.defaultInitOverride=true
Run Code Online (Sandbox Code Playgroud)

java unix log4j jar

13
推荐指数
1
解决办法
1万
查看次数

如何在运行时调整log4j级别?

我有一个在Tomcat 5.5上运行的简单Web应用程序,其中log4j用于记录.偶尔我需要将日志记录推送到DEBUG,但大多数时候我对INFO感到满意.

我可以更改我的配置xml并重新启动应用程序,但我更愿意动态切换日志级别.有没有标准的技术?

java logging tomcat log4j runtime

12
推荐指数
2
解决办法
5692
查看次数

如何在运行时更改特定用户/线程的日志级别

我正在使用slf4j与log4j 2.0或logback作为实现.例如,我的s​​ervlet有一个级别为ERROR的记录器,我的服务器产生了servlet的100个线程.我将在运行时获得一个特殊用户列表.当我检测到一些连接的特殊用户时.我想将这些特殊用户/线程的日志级别更改为DEBUG,并使其他线程的日志级别不受影响(仍然是ERROR).

我知道logback中的TurboFilter和log4j 2.0中的DynamicThresholdFilter,但由于我只在运行时获取特殊用户列表,所以我无法使用它们.

这是我的申请:

package com.example.logging;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServlet;

import org.slf4j.*;

public class App extends HttpServlet {

    private final Logger Logger = LoggerFactory.getLogger(App.class);
    Map<String, String> map = new HashMap<String, String>();

    public App() {
        map.put("user1", "DEBUG");
        map.put("user2", "DEBUG");
        map.put("user3", "ERROR");
    }

    public void writeToLogFile(String userName) {

        if (map.containsKey(userName)) {
            // do something so that I can change the logger to the corresponding log level
        }

        Logger.error(userName + " error message");

        // the logger is of level ERROR, …
Run Code Online (Sandbox Code Playgroud)

java logging multithreading logback log4j2

8
推荐指数
1
解决办法
5478
查看次数

Log4j:以编程方式更改日志级别,适用于要创建的记录器

我在我的代码中声明了记录器,如下所示:

Logger logger = LoggerFactory.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

我希望能够在运行时以编程方式更改记录器的日志级别.我已经尝试通过LogManager迭代存储库中的记录器,但它只将新的日志级别应用于在代码中实例化的记录器.如果创建了新的记录器实例,则它不使用新的日志级别.我的要求是我的Web应用程序中的日志级别需要通过管理GUI进行配置,这个新的日志级别需要应用于我的代码中的所有记录器(不包括第三方库日志记录,例如JSF,Spring,Hibernate等) .

这就是我现在正在做的,它不符合我的要求,因为它没有将日志级别应用于新实例化的记录器:

Enumeration<Logger> currentLoggers = LogManager.getCurrentLoggers();
while(currentLoggers.hasMoreElements()) {
    Logger logger = currentLoggers.nextElement();
    if (StringUtils.startsWith(logger.getName(), "com.my.company")) {
        logger.setLevel(logLevel);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Log4j 1.2.17.

java log4j

7
推荐指数
1
解决办法
1万
查看次数

如何禁用jetty9日志记录?

我正在使用嵌入式Jetty 9,路径中有slf4j.jar.默认情况下,jetty记录大量信息.

我想禁用日志记录,或者至少将日志级别更改为INFO.如何在程序中执行此操作(即,不添加一些xml配置文件)?

logging jetty slf4j

6
推荐指数
1
解决办法
4019
查看次数

标签 统计

java ×6

log4j ×4

logging ×3

log4j2 ×2

tomcat ×2

jar ×1

jetty ×1

logback ×1

multithreading ×1

runtime ×1

slf4j ×1

unix ×1