2017-02-06 17 views
1

Я использую dropwizard 0.9.2. Я хочу, чтобы любые заявления печати в моих приложениях или импортированных библиотеках записывались в файл.В dropwizard, как мне перенаправить сообщения System.out.print в файлы с помощью файла yaml?

Я попытался

https://sysgears.com/articles/how-to-redirect-stdout-and-stderr-writing-to-a-log4j-appender/

, но не смог отобразить out_log от его свойств файла в мой файл YAML.

+0

Пожалуйста, обновите свой вопрос с соответствующим кодом, который вы пытались и все/ошибками, ожидания. Предпочтительно, попробуйте создать небольшой фрагмент ode, который может запускать и воспроизводить вашу проблему. – pandaadb

+0

Я пробовал один в ссылке. – Monolith

+0

logging: # Уровень по умолчанию для всех регистраторов. Может быть OFF, ERROR, WARN, INFO, DEBUG, TRACE или ALL. уровень: INFO # Уровни, зависящие от регистратора. регистраторов: io.dropwizard: INFO appenders: - типа: файл порога: WARN архива: правда TimeZone: IST LogFormat: "\" % изюминка (% - 5level) [дата%] [% нить] [% cyan (% logger {0})]:% message% n \ "" currentLogFilename: "/Users/xyz/Documents/file.log" maxFileSize: 20KB archivedLogFilenamePattern: "/ Users/xyz/Documents/file -% i.log.gz " archivedFileCount: 5 – Monolith

ответ

0

Я рекомендую не печатать, а использовать регистратор.

В конфигурации в лесозаготовительной части вы можете определить уровень по умолчанию, в моем примере INFO , то вы можете определить некоторые регистраторы с регистратором и определения специфических appenders Здесь для com.mystuff пакетов всех уровней записываются в файл и вращать ,

Вы также можете определить некоторые глобальные приложения, здесь один для консоли.

logging: 
    level: INFO 
    loggers: 
    io.dropwizard: DEBUG 
    org.eclipse.jetty.servlets: DEBUG 
    org.hibernate.SQL: ALL 
    com.mystuff: 
     level: ALL, 
     additive: false 
     appenders: 
      - type: file 
       archive: true 
       timeZone: UTC 
       currentLogFilename: /var/log/mine/stuff.log 
       archivedLogFilenamePattern: /var/log/mine/stuff-%d.log.gz 
       archivedFileCount: 50 
       logFormat: "%date;%-5level;%message%n" 
      - type: console 
       logFormat: "%red(CDR) [%magenta(%date)] [%thread] [%cyan(%logger{0})]: %message%n" 
    appenders: 
    - type: console 
     logFormat: "%highlight(%-5level) [%magenta(%date)] [%thread] [%cyan(%logger{0})]: %message%n" 

В вашем случае, конкретный регистратор outLog где перехватчик отправляет журнал регистрации ошибок

logging: 
    level: ALL 
    logger: 
     outLog: 
     level: ERROR 
     additive: false 
     appenders: 
      - type: file 
       archive: true 
       timeZone: UTC 
       currentLogFilename: /var/log/mine/extra.log 
       archivedLogFilenamePattern: /var/log/mine/extra-%d.log.gz 
       archivedFileCount: 50 
       logFormat: "%date;%message%n" 
    appenders: 
     - type: file 
      archive: true 
      timeZone: UTC 
      currentLogFilename: /var/log/mine/stuff.log 
+0

по звуку вопроса ОП, это не то, что он хочет. У него есть библиотеки, в которых у него нет доступа к этим операциям sys-out. Он хочет перехватить и записать эти заявления. – pandaadb

+0

Точно.У меня одинаковые настройки. Я успешно зарегистрировал журнал ошибок, предупреждений для определенных файлов. Но в команде, если кто-то держит sout по ошибке, я хочу, чтобы он пошел в отдельный файл и не влиял на журналы. – Monolith

+0

Кроме того, из-за команд sysout вывод идет в некоторый tmp-файл, который удаляется, но файл desc держит этот файл. Поскольку вывод постоянно идет в этот файл, размер файла увеличивается, что приводит к полному использованию диска. Основная проблема, которую я пытаюсь решить. – Monolith

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

  • Нет связанных вопросов^_^