2016-12-28 4 views
0

Dears, У меня есть вопрос, у меня есть много сервисов, записывающих в разные файлы журналов с одинаковым уровнем журнала. Что я получил из Интернета, мне нужно создавать приложения и регистраторы на основе количества сервисов. Теперь, мой вопрос: могу ли я сделать один общий парметеризированный appender для использования для нескольких регистраторов? Мне нужны параметры в приложении, чтобы указать имя файла журнала и его путь. Приведенные ниже XML фрагмент кода для определения Appender:Log4j2: Один общий параметризированный Appender [Тип: RollingFile] для нескольких регистраторов

<Appenders> 
    <RollingFile name="RollingFile-Appender" 
       fileName="${log-path}/{This one based on service}.log" 
       filePattern="${log-path}/{This one based on service}/{This one based on service}_%d{yyyy-MM-dd}.log"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
      <Policies> 
       <OnStartupTriggeringPolicy /> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
       <SizeBasedTriggeringPolicy size="${fileSize}" /> 
      </Policies> 
     <DefaultRolloverStrategy> 
      <Delete basePath="${log-path}/{This one based on service}" maxDepth="1"> 
       <IfFileName glob="{This one based on service}*.log"> 
       <IfAny> 
        <IfAccumulatedFileSize exceeds="500 MB" /> 
        <IfAccumulatedFileCount exceeds="3" /> 
       </IfAny> 
       </IfFileName> 
     </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 
</Appenders> 

Спасибо заранее.

ответ

0

Да, вы можете использовать RoutingAppender для регистрации в нескольких файлах журнала, даже динамически создавать файлы журналов на лету. Часто люди используют контекстную карту в качестве правила маршрутизации.

Для примера см. manual page и Log4j2 FAQ page.

+0

У меня есть сомнения, является ли поток ThreadContext безопасным для одновременного доступа? Позвольте мне рассказать вам, что я делаю, у меня есть WebSphere Portal, и у него много портлетов, теперь эти портлеты используют модуль протоколирования, если один из портлетов изменяет ключ [предположим, «имя_файла_файла»], он будет отражен другими, я прав? –

+0

Да. ThreadContext - это, по существу, локально-потоковая карта. Вот для чего это ... –

Смежные вопросы