Logback - ввод пользовательского уровня в шаблоне макета

я использую logback для ведения журнала, а в logback.xml у меня есть приложение консоли как

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>

              <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
    </appender>.

я пытаюсь добиться чего-то подобного...

time  thread  |-**CUSTOMLOGLEVEL**  xyz.class - Message.

Почему ? я хочу легко фильтровать сообщения, определяя уровень журнала или какой-либо другой индикатор.

например: журналы поиска с уровнем журнала "CUSTOMLOGLEVEL". Есть ли способ указать пользовательский уровень журнала или любой другой индикатор, который показывает, что это настраиваемый журнал, а не журнал, созданный какой-либо платформой.

я пошел в направлении создания пользовательского класса.

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
         <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.logging.CustomLayout">
                             <param name="argument1" value="1" />
                             <param name="argument2" value="2" />

            </layout>
        </encoder>
    </appender>

но я не уверен, как я буду вводить эти параметры извне.

В случае, если я не ясно, пожалуйста, дайте мне знать.


person lesnar    schedule 08.06.2016    source источник
comment
Возможно, вы захотите использовать Маркеры вместо пользовательских уровней журнала   -  person hinneLinks    schedule 08.06.2016


Ответы (1)


SLF4J/Logback решает проблему «Я хочу сделать что-то более сложное, чем уровень журнала» с помощью функции под названием «Маркеры».

Например, чтобы пометить некоторые журналы как «интересные»:

Marker interesting = MarkerFactory.getMarker("INTERESTING");
Logger logger = LoggerFactory.getLogger(getClass());
…
logger.info(interesting, "Something happened: {}", value)

В PatternLayout можно использовать %marker для записи маркера, связанного с записью журнала. (См. %marker в документации.)

Это похоже на то, что в записи часто задаваемых вопросов SLF4J о том, почему у них нет "FATAL" уровне и как использовать маркеры.

Другой вариант (поскольку вы специально спрашиваете о фильтрации, чтобы увидеть, является ли это «настраиваемым журналом, а не журналом, сгенерированным какой-либо платформой»), состоит в том, чтобы убедиться, что все ваши пользовательские журналы находятся в регистраторе с тем именем, которое вы хотите (возможно, начиная с com.yourcompany.custom. ), и просто используя обычную фильтрацию регистратора. Хотя часто очень удобно, чтобы регистраторы назывались в честь класса, в котором они находятся, иногда использование разных имен для разных регистраторов более точно представляет то, что вы пытаетесь зарегистрировать, а также позволяет легко фильтровать и искать.

person Community    schedule 08.06.2016
comment
Используя маркер, я могу регистрировать отмеченные журналы в новом приложении. Но есть ли у нас возможность не регистрировать помеченные журналы в приложении, используемом для отдыха? - person Karthikaiselvan R; 24.06.2019
comment
@KarthikaiselvanR: Я думаю, вы, возможно, захотите задать свой новый вопрос о проблеме, с которой вы имеете дело, включая особенности конфигурации журнала, которую вы пытаетесь использовать. - person ; 26.06.2019