Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / log4j:ERROR Failed to write / 8 сообщений из 8, страница 1 из 1
24.08.2013, 14:57:19
    #38376551
Vit_URAZOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
День добрый коллеги!
Возникла абсолютно стандартная задача для сервера написанном на яве: перенаправить System.err и System.out в log4j.
Цель перенаправить логи в syslog
OS Ubuntu 12.0.4
Использовал обсолютной стандарный подход судя:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
import java.io.PrintStream;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class SystemStreamsLogger {

    public static final String SYS_STD_OUT = "GOUT";
    public static final String SYS_STD_ERR = "GERR";
    /**
     * Stdout and stderr streams have been stored
     */
    public static final PrintStream sysOut = System.out;
    public static final PrintStream sysErr = System.err;
    /**
     * Using different logger for out and err threads
     */
    private static Logger sysOutLogger = Logger.getLogger(SYS_STD_OUT);
    private static Logger sysErrLogger = Logger.getLogger(SYS_STD_ERR);

    public static void initStreamsOutAndErrLogging() {
        bindSystemOutLogging();
        bindSystemErrLogging();
    }

    public static void bindSystemOutLogging() {
        System.setOut(new PrintStream(new LoggingOutputStream(sysOutLogger, Level.INFO), true));
    }

    public static void bindSystemErrLogging() {
        System.setErr(new PrintStream(new LoggingOutputStream(sysErrLogger, Level.ERROR), true));
    }

    public static void unbindStreamsOutAndErr() {
        System.setOut(sysOut);
        System.setErr(sysErr);
    }
}


и
класс LoggingOutputStream
https://svn.apache.org/viewvc/logging/log4j/trunk/contribs/JimMoore/LoggingOutputStream.java?view=co

и конфигурацию
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %-5p [%40.40c]  %m%n
log4j.appender.Console.Threshold=INFO

###### File appender definition #######
log4j.appender.File=org.apache.log4j.net.SyslogAppender
log4j.appender.File.syslogHost=localhost
log4j.appender.File.Facility=USER
log4j.appender.File.Threshold=INFO
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{ISO8601} %-5p [%40.40c]  %m%n



С System.out проблем нет,
а вот при возникновения Exception
получаем
Код: java
1.
2.
3.
4.
      GERR]  log4j:ERROR Failed to write [<11>2013-08-24 14:23:28,579 ERROR [services.ApplicationClassLoader]  Error while compilation of custom script
].
2013-08-24 14:23:28,580 ERROR [                                  GERR]  log4j:ERROR Failed to write [<11>2013-08-24 14:23:28,580 ERROR [                                   GERR]  log4j:ERROR Failed to write [<11>2013-08-24
...........


то есть log4j:ERROR Failed to write

Облазил уже весь интренет - видел множество таких же вопросо но ни одного ответа на них...
Есть мысли куда рыть или как изменить архитектуру?
...
Рейтинг: 0 / 0
24.08.2013, 16:58:49
    #38376591
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Может я тупой, но логгеры настраиваются средствами самого log4j, а перенаправление стандартного вывода - стартовыми скриптами.
...
Рейтинг: 0 / 0
24.08.2013, 20:41:01
    #38376656
Vit_URAZOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Я согласен, что можно вывести стандартными скриптами, но с требование заказчика таковое что необходимо выполнить редирект System.err в log4j без использования скриптов
...
Рейтинг: 0 / 0
24.08.2013, 22:56:21
    #38376716
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Vit_URAZOV,

http://stackoverflow.com/a/1370033

P.S.
And I call this StdOutErrLog.tieSystemOutAndErrToLog() on startup
...
Рейтинг: 0 / 0
25.08.2013, 08:52:11
    #38376790
Vit_URAZOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Если внимательно посмотреть на код который я выложил , но можно у видеть что решение один в один такое как на этой ссылке, за исключением того что там идет просто "проброс" потока вывода и использован уровень INFO
... Вы попробуйте использовать эти решения , когда "свалите" в глубокий printStackTrace....
...
Рейтинг: 0 / 0
25.08.2013, 17:29:23
    #38376952
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Vit_URAZOVтребование заказчика таковое что необходимо выполнить редирект System.err в log4j без использования скриптовОбъясните заказчику, что log4j никуда и ничего не перенаправляет. И кофе не варит.
...
Рейтинг: 0 / 0
25.08.2013, 21:17:55
    #38377002
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Vit_URAZOV... Вы попробуйте использовать эти решения , когда "свалите" в глубокий printStackTrace....В самом приложении все прекрасно перехватывается.
Подозреваю, что дело в SYSLOG'е (rsyslog.conf, RSYSLOGD_OPTIONS).
...
Рейтинг: 0 / 0
26.08.2013, 02:46:48
    #38377060
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j:ERROR Failed to write
Вот пишут. Может поможет.

https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/ConsoleAppender.html ConsoleAppender appends log events to System.out or System.err using a layout specified by the user. The default target is System.out.
void setFollow(boolean newValue) Sets whether the appender honors reassignments of System.out or System.err made after configuration. public void setTarget(String value)
Sets the value of the Target option. Recognized values are "System.out" and "System.err". Any other value will be ignored.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / log4j:ERROR Failed to write / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]