Logback project - PowerPoint PPT Presentation

About This Presentation
Title:

Logback project

Description:

Complete manual, with over 150 pages of documentation, is available for free ... Markers are metadata for logging statements, coloring them for specialized processing ... – PowerPoint PPT presentation

Number of Views:201
Avg rating:3.0/5.0
Slides: 31
Provided by: Ceki
Category:

less

Transcript and Presenter's Notes

Title: Logback project


1
Logback project
  • Ceki Gülcü Sébastien Pennec

2
  • No revolution, only evolution.
  • log4j is no longer being actively developed
  • The same basic plumbing only done better.
  • Faster, smaller, higher gas mileage, and
    generally more bang for the buck.

3
Modular architecture
  • logback-core
  • Joran, Status,
  • Context, pattern parsing
  • logback-classic
  • developer logging
  • logback-access
  • container (access) logging

4
Access Logging
  • Definition Access log
  • The log generated when a user accesses a
    web-page on a web server.
  • Logback-access integrates seamlessly with Jetty
    and Tomcat

5
logback-classic implements SLF4J
  • Logback offers a native implementation of the
    SLF4J API gt Logback exposes its logging API
    through SLF4J.
  • If you are using logback, you are actually using
    SLF4J
  • SLF4J can delegate to log4j, logback,
    java.util.logging or JCL
  • SLF4J can bridge log4j, JCL and j.u.l.

6
Joran a bowl of fresh air
  • Given rules (patterns actions) it can configure
    any object.
  • Joran can learn new rules on the fly.
  • With its implicit rules, you dont even have to
    write rules.
  • It can do partial replay.
  • It is generic (can be used in your own projects)

7
Configuration example
  • ltappender name"FILE"
  • class"ch.qos.logback.core.rolling.RollingFil
    eAppender"gt
  • ltFilegtlogFile.loglt/Filegt
  • ltrollingPolicy
  • class"ch.qos.logback.core.rolling.TimeBasedRo
    llingPolicy"gt
  • ltFileNamePatterngt
  • logFile.dyyyy-MM-dd.log.zip
  • lt/FileNamePattergt
  • lt/rollingPolicygt
  • ltlayout class"ch.qos.logback.classic.PatternLay
    out"gt
  • ltPatterngt
  • dHHmmss,SSS thread -5level
    logger22 - msgn
  • lt/Patterngt
  • lt/layoutgt
  • lt/appendergt

8
Logback-access configuration
  • ltappender name"FILE"
  • class"c.q.l.c.r.RollingFileAppender"gt
  • ltFilegtaccess.log"lt/Filegt
  • ltrollingPolicy
  • class"c.q.l.c.r.TimeBasedRollingPolicy"gt
  • ltFileNamePatterngt
  • access.dyyyy-MM-dd.log.zip
  • lt/FileNamePatterngt
  • lt/rollingPolicygt
  • ltlayout class"c.q.l.access.PatternLayout"gt
  • ltPattern"gtcombinedlt/Pattern"gt
  • lt/layoutgt
  • lt/appendergt

9
Another example
  • lttestShell name"test1"gt
  • ltperiodgt5 minuteslt/periodgt
  • lt!-- we need to configure a totally new test
  • object for each run of the test --gt
  • lttest class"com.wombat.myTest"gt
  • ltDataSource class"c.w.JNDIDS"gt
  • lturlgtjndi//com.wombat/ds"lt/urlgt
  • lt/DataSourcegt
  • lt/testgt
  • lttestShellgt
  • lttestShell name"test2"gt
  • ltperiodgt60 secondslt/periodgt
  • lttest class"com.wombat.myTest2"gt
  • ltfilegtc/wombat/foo.propertieslt/filegt
  • lt/testgt
  • lt/testShellgt

10
Is Joran for me?
  • Joran is ideal for building frameworks which need
    to support arbitrary user-developed plug-ins.

11
Internal error reporting
  • Who shall guard the guards?
  • Logback modules cannot use logging to report
    their own state.
  • Something more generic is needed.

12
Errors in action
  • Internal state available via StatusManager
  • Exceptions and status messages accompanied by
    references, i.e. URLs, to external documents

13
JMX
  • Logback configuration can be reloaded via JMX
  • Statistical results exposed via JMX

14
Documentation
  • Major area of effort.
  • Complete manual, with over 150 pages of
    documentation, is available for free
  • A short introduction to access logging with
    logback-access and Jetty
  • javadoc, FAQ, error codes,

15
Filters, Filters. Filters everywhere
  • Filters attachable to any Appender
  • Evaluator filters
  • Janino filters for evaluation based on java
    expressions
  • TurboFilters for optimized global processing

16
EvaluatorFilter Janino
  • ltappender name"CYCLIC"
  • class"c.q.l.core.read.CyclicBufferAppen
    der"gt
  • ltfilter class"c.q.l.core.filter.EvaluatorFilter
    "gt
  • ltevaluator name"loggingTaskEval"gt
  • ltexpressiongt
  • logger.contains("LoggingTask")
  • message.contains("Howdydy-diddly-ho")
  • (timeStamp-loggerContext.getBirthTime())
    gt 20000
  • lt/expressiongt
  • lt/evaluatorgt
  • ltOnMatchgtDENYlt/OnMatchgt
  • lt/filtergt
  • ltMaxSizegt512lt/MaxSizegt
  • lt/appendergt

17
TurboFilters
  • ltturboFilter
  • class"c.q.l.classic.turbo.MDCFilter"gt
  • ltMDCKeygtuseridlt/MDCKeygt
  • ltValuegtsebastienlt/Valuegt
  • ltOnMatchgtACCEPTlt/OnMatchgt
  • lt/turboFiltergt

18
Parameterized logging
  • Integer entry new Interger(50)
  • logger.debug("The entry is "entry".")
  • can be optimized as
  • if(logger.isDebugEnabled())
  • logger.debug("The entry is "entry".")
  • or better yet
  • logger.debug("The entry is .", entry)

19
Markers for specialized handling
  • Markers are metadata for logging statements,
    coloring them for specialized processing

20
SiftingAppender or the appender-making appender
  • Sift logging according to runtime attributes
  • E.g. separate logs according to user sessions, so
    that the log file generated by every user go into
    distinct log files, one log file per user.
  • Works with any appender, not just FileAppender

21
SiftingAppender (continued)
  • ltappender name"SIFT" class"ch.qos.logback.class
    ic.sift.SiftingAppender"gt
  • ltdiscriminatorgt
  • ltKeygtuseridlt/Keygt
  • ltDefaultValuegtunknownlt/DefaultValuegt
  • lt/discriminatorgt
  • ltsiftgt
  • ltappender name"FILE-userid" 
  • class"ch.qos.logback.core.FileApp
    ender"gt
  • ltFilegtuserid.loglt/Filegts
  • ltAppendgtfalselt/Appendgt
  • ltlayoutgt
  • ltPatterngtd level mdc logger -
    msgnlt/Patterngt
  • lt/layoutgt
  • lt/appendergt
  • lt/siftgt
  • lt/appendergt

22
Tested Ready
  • Battery of over 450 unit tests
  • Tests written concomitantly with the code

23
Package versions in stack traces
  • java.lang.NullPointerException
  • at com.xyz.Wombat(Wombat.java57)
    wombat-1.3.jar1.3
  • at com.xyz.Wombat(Wombat.java76)
    wombat-1.3.jar1.3
  • at sun.reflect.NativeMethodAccessorImpl.invoke0(N
    ative) na1.5.0_06
  • at java.lang.reflect.Method.invoke(Method.java58
    5) na1.5.0_06
  • at junit.runners.TestMethod.invoke(TestMethod.jav
    a59) junit-4.4.jarna
  • etc..

24
logger name abbreviation
Conversion specifier Displayed logger name
logger mainPackage.sub.sample.Bar
logger15 m.s.sample.Bar
25
Odds and ends
  • RollingFileAppender automatic file compression
    the background
  • FileAppender and RollingFileAppender allow for
    the same log file to be written to by instances
    located in different JVMs
  • 10 fold improvement in the speed of transporting
    logging events over the wire
  • SMTPAppender now does TLS and SSL, subject line
    in outgoing email now based on PatternLayout

26
Odds and ends II
  • () in pattern strings can do magic
  • -50(d level thread) - mn
  • DuplicateMessage filter

27
Odds and ends II
  • () in pattern strings can do magic
  • -50(d level thread) - mn
  • DuplicateMessage filter

28
Plans for the near future
  • Finer threading model leading to less contention
  • Better documentation
  • Eclipse plug-in to visualize your logs

29
Conclusion
  • Logback is the unofficial successor of log4j, as
    the latter is no longer being actively developed.

30
Questions?
  • read the docs at http//logback.qos.ch/
  • study the code at http//svn.qos.ch
  • write to us at logback-user_at_qos.ch
  • file a bug report at http//jira.qos.ch/
  • chat with us at irc.freenode.netqos
  • talk to us at 41 21 312 32 26
Write a Comment
User Comments (0)
About PowerShow.com