Как указать Custom / Extended Logger в файле log4j.xml? - PullRequest
1 голос
/ 22 февраля 2011

Я использую Custom Logger для моего проекта, например.класс MyLogger.С этим я могу правильно записать сообщение, но оно не регистрирует правильно имя класса и метода с того места, где инициирован журнал.

Так что я думаю, что нам может понадобиться указать MyLoggger в log4j.xml, но я не знаюгде и как?

Все предложения приветствуются.Спасибо.


1 Ответ

3 голосов
/ 25 февраля 2011

Если у вас есть класс MyClass:

package com.acando.norolnes;

public class MyClass {
    public String foo;
    public int bar;
}

Что вы хотите, чтобы пользовательский формат при регистрации, вы можете создать пользовательский ObjectRenderer:

package com.acando.norolnes;

import org.apache.log4j.or.ObjectRenderer;

public class MyClassRenderer implements ObjectRenderer {

    @Override
    public String doRender(Object arg0) {
        if(arg0 instanceof MyClass) {
            MyClass m = (MyClass)arg0;
            return "("+m.foo+" "+m.bar+")";
        }
        return arg0.toString();
    }
}

И связать это в конфиге следующим образом: -element:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
  <renderer renderedClass="com.acando.norolnes.MyClass"
            renderingClass="com.acando.norolnes.MyClassRenderer"/>
  <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
    </layout>
  </appender>
  <root>
    <priority value="debug"></priority>
    <appender-ref ref="stdout"/>
  </root>
</log4j:configuration>

Для более полного примера взгляните на http://www.java2s.com/Code/Java/Language-Basics/log4jAcompleteexample.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...