相关疑难解决方法(0)

log4j.properties vs log4j.xml

我被要求从属性样式配置转移到xml样式.这个过程本身很简单,并没有给我带来任何麻烦,我只是好奇为什么我被问到这个问题,我找到了原因.我找到了这篇不错的帖子为什么选择XML over Log4J配置的属性文件?(超过3年,但仍然是我能找到的最丰富的信息),这指向了这个更老的教程.他们说

属性可以由属性文件或XML文件定义.

Log4j查找名为log4j.xml的文件,然后查找名为log4j.properties的文件.两者都必须放在src文件夹中.

我检查了一下,与声明相反,发现Log4j首先查找属性文件,第二次查找xml.实际上,如果我将两者保存在同一文件夹中,则输出将根据属性文件进行格式化.那么,我是否误解了这一说法?这完全错了吗?这个语句是针对log4j 1.2.14进行的,而我在log4j 1.2.17上,是否有可能log4j团队改变了优先级?我找不到任何相关文档,但由于xml看起来是配置log4j的首选方式,因此它将是一个奇怪的趋势反转

log4j

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

使用log4j进行条件记录

我工作的Web应用程序偶尔会为某些用户开发数据完整性问题.我想打开跟踪级别日志记录,但由于我们每秒处理100个请求跟踪日志记录,因此每个请求都是不可能的.

有没有办法让log4j能够有条件地记录?换句话说,我希望只有在特定用户发出请求时才能获取跟踪日志.由于我事先不知道哪些用户会受到影响,我不能简单地暂时硬编码用户名.

编辑:

我想我需要更清楚一些.我可以轻松地为日志语句添加条件.例如

Logger logger = Logger.getLogger("foo");
String usernameFilter = "piglet";
String username = request.getParameter("username");
logger.setLevel(usernameFilter.equals(username) ? Level.TRACE : Level.INFO);
if (logger.isTraceEnabled()) {
   logger.trace("blah blah blah");
}
Run Code Online (Sandbox Code Playgroud)

困难在于动态地改变设置日志级别的条件.换句话说,在上面的示例中,我如何设置usernameFilter的值,而不是硬编码.

java log4j

20
推荐指数
2
解决办法
3万
查看次数

log4j属性文件中的StringToMatch

我有以下XML配置我想转换为java属性文件.

我收到了以下错误

log4j:WARN Failed to set property [filter] to value "org.apache.log4j.varia.DenyAllFilter".
log4j:ERROR Could not instantiate class [true].
java.lang.ClassNotFoundException: true
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
    at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:326)
    at org.apache.log4j.PropertyConfigurator.parseAppenderFilters(PropertyConfigurator.java:881)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:812)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:395)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:403)
    at simpandfile.main(simpandfile.java:10)
Run Code Online (Sandbox Code Playgroud)

我的XML配置

  <filter class="org.apache.log4j.varia.StringMatchFilter">
    <param name="StringToMatch" value="FileNotfound" />
    <param name="AcceptOnMatch" value="true" />
  </filter>

  <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="ERROR"/>
        <param name="LevelMax" value="FATAL"/>
    </filter>

  <filter class="org.apache.log4j.varia.DenyAllFilter"/> …
Run Code Online (Sandbox Code Playgroud)

log4j smtp properties

18
推荐指数
2
解决办法
2万
查看次数

在春天用AOP登录?

我是新来的,在我的办公室里.所以我没有指导.

我需要AOP使用the 来实现日志记录log4j.

我在没有AOP基本spring MVC示例的情况下实现了日志记录?

AOP使用了aspectJ没有记录的小样本(只是制作了Sysout)?

我不知道如何整合它?

任何人都可以给我一个启动想法吗?

很好的答案肯定赞赏...

java spring log4j aspectj spring-mvc

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

使用 log4j2 编写自定义 json 消息的最佳方法

我一直在将 log4j 用于不同类型的项目,并且对 log4j2 有一些经验。所有实现都使用默认的 appender 和布局。目前我需要编写一个以 json 格式写入的应用程序。所以我通过设置一个非常简单的 log4j2 记录器来尝试 log4j2 JSONLayout 布局。

public class JSONLogger {

    private static final Logger LOGGER = LogManager.getLogger();

    public static void main(String[] args) {
        JSONLogger jsonlogger = new JSONLogger() ;
    }

    public JSONLogger() {
        LOGGER.log(Level.FATAL, "hi mum!") ;

         int val1 = 10, val2 = 11, val3 = 12;

         LOGGER.log(Level.FATAL,"val1={}, val2={}, val3={}", val1, val2, val3);
    }

}
Run Code Online (Sandbox Code Playgroud)

jsonLoggerProperties.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Properties>
        <Property name="log-path">/Users/petervannes/NetBeansProjects/JSONLogger/logfiles</Property>
    </Properties>

    <Appenders>
        <RollingFile name="json_file_appender" fileName="${log-path}/jsonlogger.json"
                     filePattern="${log-path}/%d{yyyyMMdd}_jsonlogger-%i.json" >
            <JSONLayout …
Run Code Online (Sandbox Code Playgroud)

json log4j2

10
推荐指数
3
解决办法
3万
查看次数

标签 统计

log4j ×4

java ×2

aspectj ×1

json ×1

log4j2 ×1

properties ×1

smtp ×1

spring ×1

spring-mvc ×1