2015-05-26 6 views
0

У меня есть класс обслуживания, который импортирует и анализирует файлы с ftp-сервера. Эта задача может быть выполнена с помощью контроллера Spring, когда пользователь выбирает конкретное действие.Log4j: специфическое ведение журнала

Та же услуга используется запланированной задачей (TimerTask), которая каждый день в определенное время делает то же самое.

Я хотел бы разделить регистрацию для пользователя/запланированного выполнения в различные файлы:

logs/scheduledImport.log 
logs/userImport.log 

Можно ли с Log4j?

+0

В log4j, можно настроить ведение журнала на уровне пакета, не уверен на уровне методы. Еще вы можете посмотреть http://stackoverflow.com/questions/3920930/java-util-logging-how-to-set-level-by-logger-package-or-prefix – Arpit

ответ

1

Конечно. Сначала вы должны определить 2 разных файла.

<appender name="default.file" class="org.apache.log4j.FileAppender"> 
    <param name="file" value="/log/userImport.log" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{1}] - %m%n" /> 
    </layout> 
</appender> 
<appender name="another.file" class="org.apache.log4j.FileAppender"> 
    <param name="file" value="/log/scheduledImport.log" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{1}] - %m%n" /> 
    </layout> 
</appender> 

Затем вы определяете лесоруб:

<logger name="com.foo.UserService" additivity="false"> 
    <level value="debug" /> 
    <appender-ref ref="default.file" /> 
</logger> 
<logger name="com.foo.ScheduledService" additivity="false"> 
    <level value="debug" /> 
    <appender-ref ref="another.file" /> 
</logger> 
+0

Ok masha, но UserService и ScheduledService оба вызова одного класса SameService. Я бы хотел, чтобы журналы SaveService переходили в разные файлы. Является ли это возможным? –

+0

В этом случае вы заявляете в своих регистраторах 2-го класса SameService: Logger logger1 = Logger.getLogger («com.foo.UserService»); Logger logger2 = Logger.getLogger («com.foo.ScheduledService»). И затем используйте любой регистратор, где бы вы ни хотели. – grozandrei

+0

Я попробую. Благодарю. –

0

Вы можете использовать различные экземпляры loggger. В этом случае вы можете применять различные настройки (выходной файл) для каждого регистратора.

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