Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > log4j2, вопросы


Автор: mego4el 13.11.2013, 21:55
Доброго вечера.

Столкнулся с небольшими трудностями:

http://screenshot.ru/images/2013/11/13/cMuADil.jpg

(красным цветом выделил фрагмент)

Не могу понять почему и откуда идут эти "кривые" символы. В то время как рут логгер должен выдавать по шаблону hh:mm:ss [LEVEL] msg (как видно немного выше)
Вызов идет из внешней библиотеки mchange. Вероятно что там остались зачатки старого util Logging. Как с этим бороться? Подскажите пожалуйста.

Сам конфиг имеет вид:

Код

    <Configuration>
     <Appenders>
     
         <Console name="CONSOLE" target="SYSTEM_OUT">
             <PatternLayout>
                 <!--<Pattern>%p : %m %s %n</Pattern>-->
                 <!--<Pattern>%d{HH:mm:ss} [%t] %-5level %msg%n</Pattern>-->
                 <Pattern>%d{HH:mm:ss} [%p] %m%n</Pattern>
             </PatternLayout>
         </Console>
    ...
     
         <Logger name="Audit" additivity="false">
           <Appender-ref ref="AUDITLOG" />
         </Logger>
     
         <Root level="info">
             <Appender-ref ref="CONSOLE"/>
             <Appender-ref ref="FILELOG"/>
         </Root>
     
     </Loggers>
    </Configuration>


Автор: mego4el 14.11.2013, 00:00
Еще небольшой вопрос:

Как создать свой уровень логгирования? Причем суть в том, что бы просто сделать другой шаблон сообщению, например:

log.warn("this is warning"); - стандартно
log.mylevel("this is my level"); - новый уровень

Выводы: 
[WARNING] this is warning
[MYLEVEL] this is my level

В голову приходит только сделать банально
<Pattern>%d{HH:mm:ss} [MYLEVEL] %m%n</Pattern>

Но тогда даже не знаю как мне в конкретный момент времени вызвать через метод (log.mylevel - без понятия как создать)

Наведите пожалуйста на верные мысли. Спасибо!

Автор: AlexAddams 4.12.2013, 23:29
Есть неплохая статья, мне в свое время помогла : 
http://javatutor.net/articles/journalizing-with-log4j

Автор: sergioK1 12.12.2013, 11:36
Вот  еще 
http://www.tutorialspoint.com/log4j/log4j_logging_files.htm

Но у меня вопрос 

Код

log4j.appender.FILE.File=${log}/log.out


кто отвечает за то что в ${log} оказался реальный путь на директорию,
Это переменная операционной системы , а если на занята другой аппликацией ??
и как мне сделать конфигурацию сразу для Windows и Linux
Я счал делаю в коде 
Код

 Appender fileAppender = (FileAppender)Logger.getRootLogger.getAppender();
 if( System.getPopery("OS").startWith("Linux"))
fileAppender.setWriter(System.getProperty("catalina.base")/folder1/folder2/logger)

if( System.getPopery("OS").startWith("Windows")){
 fileAppender.setWriter(System.getProperty("catalina.base")\\folder1\\folder2\\logger)

}

"catalina.base")/folder1/folder2/logger под винду не работает ,

Я хочу чтоб это было в конфиге а не в коде 


Автор: AlexAddams 12.12.2013, 23:33
Обычно создаю файл *.xml с настройками, потом использую  org.apache.log4j.xml.DOMConfigurator из log4j у него есть 
public static void configure(String filename) для загрузки файла, обычно ложу файл с настройками в lib проекта и спокойно пользуюсь. Метод static. Есть еще аналог public static void configure(URL url), можно положить удаленно и грузить и т.д. Вместо {log} попробуй написать {user.home} и посмотри где запишет.
Посмотри вот здесь: http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html, там есть примерчик, можно с ним побаловаться, установить например {my.user.home} на понравившуюся директорию и работай. Самое интересное, System.getProperties().list(System.out); выполни и узнаешь какие настройки установлены.  Конечно устанавливать нужно {my.user.home} до вызова конфигурации lo4j, например: в main, сначала, установи конфигурацию своих переменных для приложения, потом загрузи *.xml с настройками log4j.
По уровням посмотри http://www.skipy.ru/useful/logging.html там есть Использование Log4J, внимательно посмотри и проанализируй табличку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)