This post is a minimal howto for log4j version 1.
What a simple task ! but who never search a simple sample on the web send a little stone to me ;)
Feel free to copy paste anyway ;))
What are the dependencies
You will need to add log4j, slf4j and lombok (to use @Slf4j) :
<properties> <!--General project configuration --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <lombok.version>1.16.6</lombok.version> <log4j.version>1.2.17</log4j.version> <slf4j.version>1.7.10</slf4j.version> <junit.version>4.12</junit.version> </properties> <dependencyManagement> <dependencies> <!-- @Slf4j annotation --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <!-- ## LOGS ## --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency>
How to use it
Simply add "@Slf4j" to your class, and then you could use "log" as logger.
import java.security.InvalidParameterException; import lombok.extern.slf4j.Slf4j; @Slf4j public class MyClass { public MyClass() { log.debug("constructor YEP"); } public void doIt(long value) { log.info("doIt {}", value); try { throw new InvalidParameterException("Zobby"); } catch (Exception ee) { log.error("I'm so stupid: {} => {}", ee.getClass().getSimpleName(), ee.getMessage(), ee); log.warn("same without stack trace !: {} => {}", ee.getClass().getSimpleName(), ee.getMessage()); } } }
How to configure appenders
To configure log4j, add a
log4j.properties
file to your resources. Start by defining a console appender. This appender should appear in the rootLogger definition too. You could define the following content to start:log4j.rootLogger=DEBUG, console ## Console appender log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.threshold=DEBUG log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d %5p [%c{1}] %m%n # package log levels # # Log4j bootstrap # log4j.logger.org.apache.http = INFO log4j.logger.com.myapp = DEBUG #
How to configure file appender
Update your rootLoger to refer to the logfile appender, and add a logfile appender definition:
log4j.rootLogger=DEBUG, console, logfile ## File appender log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.threshold=DEBUG log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{ISO8601} - %-5.5p - %t - %c - %m%n log4j.appender.logfile.file=MY_CUSTOMFILEHERE.log log4j.appender.logfile.maxBackupIndex=5 log4j.appender.logfile.maxFileSize=2048KB log4j.appender.logfile.append=true
How to configure graylog (splunk-like) appender
Update your rootLoger to refer to the graylog appender, and add a gelf appender definition:
### Graylog appender log4j.appender.graylog2=org.graylog2.log.GelfAppender log4j.appender.graylog2.graylogHost=tcp:mygraylogserver.net log4j.appender.graylog2.graylogPort = 12201 #log4j.appender.graylog2.originHost=(default to the local hostname) log4j.appender.graylog2.facility=gelf-java log4j.appender.graylog2.layout=org.apache.log4j.PatternLayout log4j.appender.graylog2.extractStacktrace=true log4j.appender.graylog2.addExtendedInformation=true log4j.appender.graylog2.additionalFields={'environment': '${projectEnvironment}', 'application': 'MyPoc','version': '${buildVersion}_${buildTimestamp}'}
How to configure NT event appender
Pre-requisites : add
NTEventLogAppender.dll
and NTEventLogAppender.amd64.dll
to the current directory or to the java ld library path. You could append "-Djava.library.path=PATH
" to your application if needed. Get this dll files from log4j zip distribution doc : https://wiki.apache.org/logging-log4j/NTEventLogAppender
Update your rootLoger to refer to the ntappender appender, and add a new ntappender definition:
# NTEventLogAppender log4j.appender.ntappender=org.apache.log4j.nt.NTEventLogAppender log4j.appender.ntappender.Source=MyKillerApp log4j.appender.ntappender.layout=org.apache.log4j.PatternLayout log4j.appender.ntappender.layout.ConversionPattern=%d{ISO8601} - %-5.5p - %t - %c - %m%n
For this last usecase you will be able to see the app logs into Windows Event Log service :
Aucun commentaire:
Enregistrer un commentaire