Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с log4j / 18 сообщений из 18, страница 1 из 1
06.03.2012, 18:08:26
    #37694057
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Добрый день!

Я в java человек новый. Столкнулся с проблемой записи в лог из нескольких потоков.
используется log4j.properties:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
# Root logger option
log4j.rootLogger=INFO, stdfile, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to stdfile
log4j.appender.stdfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stdfile.file=mf.log
log4j.appender.stdfile.append=true
log4j.appender.stdfile.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.stdfile.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.stdfile.layout.conversionPattern=%d{yyyy-MM-dd hh:mm:ss} %5p %c{1}:%L - %m%n

log4j.logger.messapp=INFO
#log4j.loggermessapp.MsproView=INFO



В лог не попадают данные из одного потока.
Помогите кто чем может.
Заранее благодарен.
...
Рейтинг: 0 / 0
07.03.2012, 09:19:53
    #37694699
crazy_hands
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Леонов Юрий, нужна часть кода, которая не пашет.
...
Рейтинг: 0 / 0
07.03.2012, 11:17:57
    #37694860
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
crazy_hands,

значит так, прога стартует, читает настройки и запускает потоки процедурой process
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   private void process() throws Exception {
        this.inboundPollingThread = new InboundPollingThread();
        this.inboundPollingThread.setName("SMSServer - InboundPollingThread");
        this.inboundPollingThread.start();
        this.outboundPollingThread = new OutboundPollingThread();
        this.outboundPollingThread.setName("SMSServer - OutboundPollingThread");
        this.outboundPollingThread.start();
        while (!this.shutdown) {
            Thread.sleep(1000);
        }
    }



при старте потока inboundPollingThread в цикле пока не закроется прога через определенный интервал вызывается процедура readMessages()
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   void readMessages() {
        List<InboundMessage> msgList = new ArrayList<InboundMessage>();
        try {
            Service.getInstance().readMessages(msgList, MessageClasses.ALL);
            if (msgList.size() > 0) 
            {
                Logger.getInstance().logInfo("SMSServer: receiving... [" + msgList.size() + "]", null, null);
                for (Interface<? extends Object> inf : getInfList()) {
                    if (inf.isInbound()) {
                        inf.messagesReceived(msgList);
                    }
                }
                if (getProperties().getProperty("settings.delete_after_processing", "no").equalsIgnoreCase("yes")) {
                    for (InboundMessage msg : msgList) {
                        Service.getInstance().deleteMessage(msg);
                    }
                }
            }
        } catch (Exception e) {
            Logger.getInstance().logError("SMSServer: reading messages exception!", e, null);
        }
    }



аналогично второй процесс outboundPollingThread , только там вызывается sendMessages()
Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
    void sendMessages() {
        boolean foundOutboundGateway = false;
        for (org.smslib.AGateway gtw : Service.getInstance().getGateways()) {
            if (gtw.isOutbound()) {
                foundOutboundGateway = true;
                break;
            }
        }
        if (foundOutboundGateway) {
            List<OutboundMessage> msgList = new ArrayList<OutboundMessage>();
            try {
                for (Interface<? extends Object> inf : getInfList()) {
                    if (inf.isOutbound()) {
                        msgList.addAll(inf.getMessagesToSend());
                    }
                }
            } catch (Exception e) {
                Logger.getInstance().logError("SMSServer: sending messages exception!", e, null);
            }
            if (getProperties().getProperty("settings.send_mode", "sync").equalsIgnoreCase(("sync"))) {
                Logger.getInstance().logInfo("SMSServer: sending synchronously...", null, null);
                for (OutboundMessage msg : msgList) {
                    try {
                        Service.getInstance().sendMessage(msg);
                        for (Interface<? extends Object> inf : getInfList()) {
                            if (inf.isOutbound()) {
                                inf.markMessage(msg);
                            }
                        }
                    } catch (Exception e) {
                        Logger.getInstance().logError("SMSServer: sending messages exception!", e, null);
                        try {
                            for (Interface<? extends Object> inf : getInfList()) {
                                if (inf.isOutbound()) {
                                    inf.markMessage(msg);
                                }
                            }
                        } catch (Exception e1) {
                            Logger.getInstance().logError("SMSServer: sending messages exception!", e1, null);
                        }
                    }
                }
            } else {
                Logger.getInstance().logInfo("SMSServer: sending asynchronously... [" + msgList.size() + "]", null, null);
                for (OutboundMessage msg : msgList) {
                    if (!Service.getInstance().queueMessage(msg)) {
                        try {
                            for (Interface<? extends Object> inf : getInfList()) {
                                if (inf.isOutbound()) {
                                    inf.markMessage(msg);
                                }
                            }
                        } catch (Exception e) {
                            Logger.getInstance().logError("SMSServer: sending messages exception!", e, null);
                        }
                    }
                }
            }
        }
    }


суть в том что в лог попадает в основном
Код: java
1.
Logger.getInstance().logInfo("SMSServer: sending asynchronously... [" + msgList.size() + "]", null, null);



а запись
Код: java
1.
Logger.getInstance().logInfo("SMSServer: receiving... [" + msgList.size() + "]", null, null);


выпадает крайне редко даже при наличии входящих сообщений
надеюсь что этих данных хватит
...
Рейтинг: 0 / 0
07.03.2012, 11:35:03
    #37694910
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Леонов Юрийвыпадает крайне редко даже при наличии входящих сообщений
надеюсь что этих данных хватит

Поставьте Logger.getInstance().logInfo("SMSServer: receiving... [" + msgList.size() + "]", null, null); перед if (msgList.size() > 0) тогда они будут в равных условия с "...sending asynchr.." и будет вывод даже при отсутствии входящих сообщений . :)
...
Рейтинг: 0 / 0
07.03.2012, 11:43:34
    #37694929
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
0FD,
а вот это не предусмотрено техзаданием ))
я уже думал так сделать
у меня вопрос такой - а могут ли писать в один файл одновременно два потока?
...
Рейтинг: 0 / 0
07.03.2012, 12:10:09
    #37695007
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
а вообще где можно посмотреть сам код процедуры log класса log4j?
...
Рейтинг: 0 / 0
07.03.2012, 12:13:32
    #37695015
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Леонов Юрийу меня вопрос такой - а могут ли писать в один файл одновременно два потока?
Log4j складывает сообщения в очередь и в файл они пишутся только одним потоком сразу пачками.
...
Рейтинг: 0 / 0
07.03.2012, 12:16:10
    #37695021
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Logger.getInstance().logError()
А что за версия Log4j? Я там таких методов вообще не наблюдаю.
...
Рейтинг: 0 / 0
07.03.2012, 12:55:19
    #37695104
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Blazkowicz,
а внутри?
...
Рейтинг: 0 / 0
07.03.2012, 13:02:00
    #37695121
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Леонов ЮрийBlazkowicz,
а внутри?
А по-русски?
Logger.getLogger("My Application Log").error() - это пример логирования Log4j.
Методы getInstance() - deprecated. Да и метода без параметров такого я не вижу.
...
Рейтинг: 0 / 0
07.03.2012, 13:09:16
    #37695139
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Blazkowicz,
Код: java
1.
2.
3.
4.
5.
public void logInfo(String message, Exception e, String gatewayId)
	{
		if (log4jLogger == null) return;
		log4jLogger.log(FQCN, Level.INFO, formatMessage(message, gatewayId), e);
	}


это что?
...
Рейтинг: 0 / 0
07.03.2012, 13:13:19
    #37695154
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Blazkowicz,
BlazkowiczLog4j складывает сообщения в очередь и в файл они пишутся только одним потоком сразу пачками.

а можно поподробнее?
...
Рейтинг: 0 / 0
07.03.2012, 13:19:51
    #37695166
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
BlazkowiczЛеонов ЮрийBlazkowicz,
а внутри?
А по-русски?
Logger.getLogger("My Application Log").error() - это пример логирования Log4j.
Методы getInstance() - deprecated. Да и метода без параметров такого я не вижу.

Кажется это вот что:
http://smslib.googlecode.com/svn-history/r2281/smslib/trunk/src/java/org/smslib/helper/Logger.java
...
Рейтинг: 0 / 0
07.03.2012, 13:20:20
    #37695169
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Леонов ЮрийBlazkowicz,
Код: java
1.
2.
3.
4.
5.
public void logInfo(String message, Exception e, String gatewayId)
	{
		if (log4jLogger == null) return;
		log4jLogger.log(FQCN, Level.INFO, formatMessage(message, gatewayId), e);
	}


это что?
Я по чем знаю. Какой-то метод. У нас тут сеанс телепатичнсой связи? Угадайте что за код внутри?
formatMessage что-то использует?
if (log4jLogger == null) return; вас не смущает? Может он там постоянно null?
...
Рейтинг: 0 / 0
07.03.2012, 13:21:22
    #37695174
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
0FD,
это оно и есть ))
...
Рейтинг: 0 / 0
07.03.2012, 13:22:37
    #37695179
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Леонов ЮрийBlazkowicz,
BlazkowiczLog4j складывает сообщения в очередь и в файл они пишутся только одним потоком сразу пачками.

а можно поподробнее?
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/AsyncAppender.html
...
Рейтинг: 0 / 0
07.03.2012, 13:25:25
    #37695183
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
Blazkowicz,
выше ссылка есть, именно этот класс и используется
...
Рейтинг: 0 / 0
12.03.2012, 19:25:32
    #37701464
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с log4j
0FD,

а вы работали с этими классами?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с log4j / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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