2013-05-29 5 views
1

Я хочу, чтобы путь к файлу (вместе с именем файла) был установлен в appender в logback.xml , какой класс мне нужно использовать. пожалуйста помоги. Ниже мой AppenderКак получить путь к файлу в appender в logback.xml

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender"> 
    <discriminator class="com.hotwaxmedia.logger.ThreadNameBasedDiscriminator"/> 
    <sift> 
     <appender class="ch.qos.logback.core.FileAppender"> 
      <file>runtime/logs/app-${threadName}.html</file> 
      <layout class="ch.qos.logback.classic.PatternLayout"> 
       <pattern>%p %d ${threadName} [%logger{0} : %-5level] %msg%n%rEx</pattern> 
      </layout> 
     </appender> 
    </sift> 
</appender> 
+1

и какие проблемы вы с? – fGo

+0

Я просто хочу получить путь к файлу (i.e runtime/logs/app - $ {threadName} .html) в моем java-коде. поэтому есть класс или метод, возвращающие путь к файлу. – user2404847

ответ

0

Вы можете загрузить Appender программно

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory(); 
for (Logger logger : context.getLoggerList()) { 
    for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders();  index.hasNext();) { 
    Appender<ILoggingEvent> appender = index.next(); 
    } 
} 

, то вы можете проверить это appender является FileAppender и взываем к getFile(). Взгляните на документ http://logback.qos.ch/apidocs/ch/qos/logback/core/FileAppender.html

0

Эта проблема связана с LOGBACK-833, которая была исправлена ​​в версии 1.0.12. Таким образом, вам необходимо обновить до версии 1.0.12 или новее. Экземпляр дискриминатора должен определить «threadName» в качестве ключа для экспорта. В противном случае $ {threadName} не может быть разрешено. Вот измененное Дискриминатор:

<discriminator class="com.hotwaxmedia.logger.ThreadNameBasedDiscriminator"> 
    <!-- the key to export needs to be defined --> 
    <key>threadName</key> 
</discriminator> 
0

вы должны путь пользователя в тег "fileNamePattern", например:

<Discriminator> 

     <Key>userId</Key> 

     <DefaultValue>general</DefaultValue> 

    </Discriminator> 



    <sift> 

     <appender name="FILE-MODULENAME-${userId}" class="ch.qos.logback.core.rolling.RollingFileAppender"> 

       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
        <!-- rollover daily --> 
        <fileNamePattern>/opt/webligic12/user_projects/domains/myDomain/servers/AdminServer/logs/%d{yyyy-MM-dd}/byUser/modulename/${userId}-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> 
        <timeBasedFileNamingAndTriggeringPolicy 
         class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
        <!-- or whenever the file size reaches maxFileSize --> 
        <maxFileSize>2MG</maxFileSize> 
        </timeBasedFileNamingAndTriggeringPolicy> 
       </rollingPolicy> 


      <Append>true</Append> 

      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 

       <Pattern>%d %X{user} %level %msg %n</Pattern> 

      </encoder> 

     </appender> 

    </sift> 

</appender> 
Смежные вопросы