Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: log4j - logowanie do bazy

Cześć,

Zrobiłem sobie logowanie do bazy za pomocą log4j:

log4j.rootLogger=DEBUG, CUBRID

# CUBRID Database
log4j.appender.CUBRID = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.CUBRID.driver = org.postgresql.Driver
log4j.appender.CUBRID.user = postgres
log4j.appender.CUBRID.password = postgres
log4j.appender.CUBRID.URL = jdbc:postgresql://localhost:5432/logs
log4j.appender.CUBRID.sql = INSERT INTO LOGS VALUES('%x','%d{yyyy-MM-dd HH:mm:ss.SSS}','%C','%p','%m')
log4j.appender.CUBRID.layout=org.apache.log4j.PatternLayout


Mam kod gdzie używam logowania:


public class LogTest extends BaseDAO<Object> {

public void show()
{
Logger log = Logger.getLogger(LogTest.class.getName());
log.info("Wystartowal");
log.warn("Trwanie aplikacji");
try {
if ( 1 / 0 == 0 ) {
System.out.println("Czekaj...");
}
} catch( Exception ex) {
log.error("Komunikat bledu", ex);
}
log.fatal("Koniec aplikacji");
}
}


Wszystko ładnie zapisuje do bazy tylko, że zapisuje mi wszystkie logi a ja bym chciał aby mi zapisywało tylko to co sam podam za pomocą komend log.warn(), log.fatal() itd.
Jak to zrobić?
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: log4j - logowanie do bazy

sprawdz:
log4j.appender.CUBRID.Threshold=WARN
Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: log4j - logowanie do bazy

Jarosław Szczepankiewicz:
sprawdz:
log4j.appender.CUBRID.Threshold=WARN

Zmieniło posiom logowania na WARN i owszem nie zapisuje mi wszystkich logów, ale również nie zapisuje mi mojego użycia log.info()
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: log4j - logowanie do bazy

przecież INFO jest poniżej WARN, RTFM
Łukasz D.

Łukasz D. Software Developer,
DevOps Fan

Temat: log4j - logowanie do bazy

Piszę z pamięci:
log4j.logger.LogTest=DEBUG, CUBRID

a rootlogger puścić np. na konsolę
log4j.rootLogger=DEBUG, ConsoleAppenderŁukasz D. edytował(a) ten post dnia 04.10.12 o godzinie 18:19
Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: log4j - logowanie do bazy

Jeszcze jedna sprawa. Mam w pliku properties:


log4j.appender.CUBRID.sql = INSERT INTO LOGS VALUES('%x','%d{yyyy-MM-dd HH:mm:ss.SSS}','%C','%p','%m')


Ale jak zmienić, żeby zamiast '%x' wstawiało jakiś mój parametr przekazany przez metodę, w której mam logowanie?
Łukasz D.

Łukasz D. Software Developer,
DevOps Fan

Temat: log4j - logowanie do bazy

w kodzie wywołaj statyczną metodę:

org.apache.log4j.MDC.put("mojParametr",123);

a w logowaniu:

INSERT INTO LOGS VALUES('%X{mojParametr}','%d{yyyy-MM-dd HH:mm:ss.SSS}','%C','%p','%m')


Przykłady:
http://www.fiveminutes.eu/logging-custom-parameters-wi...
http://veerasundar.com/blog/2009/11/log4j-mdc-mapped-d...

Następna dyskusja:

log4j i logowanie z jednego...




Wyślij zaproszenie do