SlideShare une entreprise Scribd logo
1  sur  27
Slide 1
Slide 2




Agenda
 Current Log Implementation Problems!!!
 Log4j Overview
 Log4j And Web Applications
 Log4j And Class Loaders In Application Servers
 Log4j And The “Logging Separation” Problem
 Log4j Implementation In Web Applications
 Log4j And The “Log Rotation” Problem
 Dated Logger Implementation In Web Applications
 For You….
Slide 3




Current Log Implementation
Problems!!!
Slide 4
Slide 5
Slide 6
Slide 7




Log4j Overview
Slide 8




Log4j normally needs to be configured only once. Some new users try to
configure log4j in each and every class. This is very inefficient and just plain
wrong.




A logger is said to be an ancestor of another logger if its name followed by a
dot is a prefix of the descendant logger name.
The root logger resides at the top of the logger hierarchy.
e.g. x.y is parent of x.y.z
Slide 9




Log4j And Web Applications
Slide 10




In practice placing log4j-VERSION.jar in the WEB-INF/lib directory of your
web-application will cause log4j classes to be loaded/unloaded whenever your
web application is loaded/unloaded. Moreover, each copy of the log4j classes
will be treated as a separate unrelated copy by the JVM.

Under Tomcat 3.x and 4.x, you should place the log4j.xml or
log4j.properties under the WEB-INF/classes directory of your web-
applications. Log4j will find the properties file and initialize itself.


   WEB-INF
      Lib
      • log4j-version.jar



      Classes
      • log4j.xml/log4j.properties
Slide 11




Log4j And Class Loaders In
Application Servers
Slide 12




The Java class loader delegation model gives precedence to parent class
loaders. This means that if log4j.jar is available on the CLASSPATH, or
under JAVA_HOME/jar/lib/ext or to any class loader which is a parent of the
webapplication's class loader, then that copy of log4j will be loaded into
memory and shared by all web-applications.
Slide 13




Log4j And The “Logging Separation”
Problem
Slide 14




In a separated logging environment, each web-application can configure log4j
in different ways such that the configuration of one web-application cannot
interfere with the logging configuration of another web application.

Since time immemorial users have struggled to control the logging
configuration of multiple web-applications deployed on the same Servlet
Container (e.g. Tomcat).
Slide 15




Log4j Implementation In Web
Applications
Slide 16




Assuming each web-application is loaded by a distinct class loader, then
placing a copy of log4j.jar under WEB-INF/lib/ directory of each web-
application will automatically result in distinct log4j-logging universes. Simply
put, each webapplication will load its own distinct copy of log4j classes into
memory. All such copies are invisible and inaccessible to each other.
Slide 17




Log4j allows different applications live in their own parallel universe by using
a different LoggerRepository for each application. Given that each hierarchy
(i.e. logger repository) manages its own separate logger tree, logging
separation is a direct consequence of this approach.

The Java Servlet API mandates a unique ServletContext for each web
application. Thus, a web-application can set an attribute for a Servlet context
which can be shared by all Servlet and jsp pages of a web-application but
remain invisible to other web-applications.
In particular, an initialization Servlet can create, set and configure an
independent logger hierarchy in the Servlet context. Subsequently, other
Servlet can obtain the hierarchy stored in the Servlet context in order to retrieve
logger instances.
These logger instances will be attached to the particular hierarchy specific to
the web-application.
Slide 18




This solution relies on the Servlet Container to keep track of the
execution context and provide a different logging environment for each
context.

Each web application has its own class loader and Tomcat sets the Thread
Context Classloader, or TCL, to be the class loader of the currently
executing web application.

Servlet Container provides a separate hierarchy instance for each
web-application. Each logger object that log4j creates is attached to a
hierarchy. The Hierarchy class implements the LoggerRepository interface by
arranging logger objects in a tree according to their name.
Slide 19




Log4j And The “Log Rotation”
Problem
Slide 20




The log file rotation on Application servers fails with following error


log4j: ERROR Failed to rename [<file
name>.log] to [<file name>.log.2010-03-
23].
Slide 21




Log4j And “Multiple Line Printing”
Problem
Slide 22




Logger         Added        Additivity
                                             Output Targets       Comment
Name           Appenders    Flag
                                                                  The root logger does
root           A1           not applicable   A1
                                                                  not have a parent.
                                                                  Appenders in root
x              A-x1, A-x2   true             A1, A-x1, A-x2       are added to
                                                                  appenders in "x".
                                                                  Appenders of "x" and
x.y            none         true             A1, A-x1, A-x2
                                                                  root.
                                             A1, A-x1, A-x2, A-   Appenders in "x.y.z",
x.y.z          A-xyz1       true
                                             xyz1                 "x" and root.
                                                                  No appender
                                                                  accumulation as the
security       A-sec        false            A-sec
                                                                  additivity flag is set
                                                                  to false.
                                                                  Only appenders of
                                                                  "security" as the
security.ACL   none         true             A-sec                additivity flag in
                                                                  "security" is set to
                                                                  false.
Slide 23




Dated Logger Implementation In
Web Applications
Slide 24




DatedFileAppender is an "appender" object designed for use with the
Apache Log4j logging system.

It provides an Apache Tomcat style FileLogger implementation that differs
from the file loggers provided with Log4j.

While the DatedFileAppender was written with Apache Tomcat in mind, it does
not depend on Tomcat and may be used in any other environment.

How to use it?

•Copy the datedFileAppender-1.0.2.jar to the same directory as your other
application jar files and add the jar file name to your CLASSPATH.

•Modify your log4j.properties file to use the DatedFileAppender class (see
below for configuration options).
Slide 25




For You….
Slide 26




Still Have Any
Question? 
Slide 27




Thank You !!!

Contenu connexe

Similaire à Logger implementation

Profusion of RIAs
Profusion of RIAsProfusion of RIAs
Profusion of RIAsSho Ito
 
Java Collections Framework
Java  Collections  FrameworkJava  Collections  Framework
Java Collections Frameworkguestd8c458
 
Lec 4 06_aug [compatibility mode]
Lec 4 06_aug [compatibility mode]Lec 4 06_aug [compatibility mode]
Lec 4 06_aug [compatibility mode]Palak Sanghani
 
Making Applications Work Together In Eclipse
Making Applications Work Together In EclipseMaking Applications Work Together In Eclipse
Making Applications Work Together In EclipseKaniska Mandal
 
Decorating code (Research Paper)
Decorating code (Research Paper)Decorating code (Research Paper)
Decorating code (Research Paper)Jenna Pederson
 
R Programming: Introduction To R Packages
R Programming: Introduction To R PackagesR Programming: Introduction To R Packages
R Programming: Introduction To R PackagesRsquared Academy
 
Smooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceSmooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceguest301ea
 
Gemini WEB and Virgo
Gemini WEB and VirgoGemini WEB and Virgo
Gemini WEB and VirgoHristo Iliev
 
Jsp And Servlets
Jsp And ServletsJsp And Servlets
Jsp And ServletsAdil Jafri
 
Rein_in_the_ability_of_log4j
Rein_in_the_ability_of_log4jRein_in_the_ability_of_log4j
Rein_in_the_ability_of_log4jRazorsight
 
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek PiotrowskiJDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek PiotrowskiPROIDEA
 
Whoops! where did my architecture go?
Whoops! where did my architecture go?Whoops! where did my architecture go?
Whoops! where did my architecture go?Oliver Gierke
 
Designing JEE Application Structure
Designing JEE Application StructureDesigning JEE Application Structure
Designing JEE Application Structureodedns
 
Logging with Logback in Scala
Logging with Logback in ScalaLogging with Logback in Scala
Logging with Logback in ScalaKnoldus Inc.
 
Java%20 collections%20framework
Java%20 collections%20frameworkJava%20 collections%20framework
Java%20 collections%20frameworkIlakkian
 

Similaire à Logger implementation (20)

Logback
LogbackLogback
Logback
 
Profusion of RIAs
Profusion of RIAsProfusion of RIAs
Profusion of RIAs
 
Java Collections Framework
Java  Collections  FrameworkJava  Collections  Framework
Java Collections Framework
 
Ajaxworld West 08
Ajaxworld West 08Ajaxworld West 08
Ajaxworld West 08
 
Lec 4 06_aug [compatibility mode]
Lec 4 06_aug [compatibility mode]Lec 4 06_aug [compatibility mode]
Lec 4 06_aug [compatibility mode]
 
Making Applications Work Together In Eclipse
Making Applications Work Together In EclipseMaking Applications Work Together In Eclipse
Making Applications Work Together In Eclipse
 
Decorating code (Research Paper)
Decorating code (Research Paper)Decorating code (Research Paper)
Decorating code (Research Paper)
 
R Programming: Introduction To R Packages
R Programming: Introduction To R PackagesR Programming: Introduction To R Packages
R Programming: Introduction To R Packages
 
Smooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceSmooth transition to Eclipse in practice
Smooth transition to Eclipse in practice
 
Java 8 Lambda
Java 8 LambdaJava 8 Lambda
Java 8 Lambda
 
Gemini WEB and Virgo
Gemini WEB and VirgoGemini WEB and Virgo
Gemini WEB and Virgo
 
Jsp And Servlets
Jsp And ServletsJsp And Servlets
Jsp And Servlets
 
Rein_in_the_ability_of_log4j
Rein_in_the_ability_of_log4jRein_in_the_ability_of_log4j
Rein_in_the_ability_of_log4j
 
Jira Rev002
Jira Rev002Jira Rev002
Jira Rev002
 
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek PiotrowskiJDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
 
Whoops! where did my architecture go?
Whoops! where did my architecture go?Whoops! where did my architecture go?
Whoops! where did my architecture go?
 
Designing JEE Application Structure
Designing JEE Application StructureDesigning JEE Application Structure
Designing JEE Application Structure
 
Logging with Logback in Scala
Logging with Logback in ScalaLogging with Logback in Scala
Logging with Logback in Scala
 
Java%20 collections%20framework
Java%20 collections%20frameworkJava%20 collections%20framework
Java%20 collections%20framework
 
Jfxpub binding
Jfxpub bindingJfxpub binding
Jfxpub binding
 

Plus de Abhishek Chikane

Plus de Abhishek Chikane (10)

MediaWiki for ALM
MediaWiki for ALMMediaWiki for ALM
MediaWiki for ALM
 
Tracking universal immunization
Tracking universal immunizationTracking universal immunization
Tracking universal immunization
 
Web Application Architecture
Web Application ArchitectureWeb Application Architecture
Web Application Architecture
 
Authentication Server
Authentication ServerAuthentication Server
Authentication Server
 
Creating Hardware Inventory
Creating Hardware InventoryCreating Hardware Inventory
Creating Hardware Inventory
 
Porting Java App To Cloud
Porting Java App To CloudPorting Java App To Cloud
Porting Java App To Cloud
 
Cloud Computing And Salesforce
Cloud Computing And SalesforceCloud Computing And Salesforce
Cloud Computing And Salesforce
 
Changing Trends In Cloud Computing
Changing Trends In Cloud ComputingChanging Trends In Cloud Computing
Changing Trends In Cloud Computing
 
Live broadcasting
Live broadcastingLive broadcasting
Live broadcasting
 
CAPTCHA
CAPTCHACAPTCHA
CAPTCHA
 

Dernier

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Dernier (20)

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

Logger implementation

  • 2. Slide 2 Agenda  Current Log Implementation Problems!!!  Log4j Overview  Log4j And Web Applications  Log4j And Class Loaders In Application Servers  Log4j And The “Logging Separation” Problem  Log4j Implementation In Web Applications  Log4j And The “Log Rotation” Problem  Dated Logger Implementation In Web Applications  For You….
  • 3. Slide 3 Current Log Implementation Problems!!!
  • 8. Slide 8 Log4j normally needs to be configured only once. Some new users try to configure log4j in each and every class. This is very inefficient and just plain wrong. A logger is said to be an ancestor of another logger if its name followed by a dot is a prefix of the descendant logger name. The root logger resides at the top of the logger hierarchy. e.g. x.y is parent of x.y.z
  • 9. Slide 9 Log4j And Web Applications
  • 10. Slide 10 In practice placing log4j-VERSION.jar in the WEB-INF/lib directory of your web-application will cause log4j classes to be loaded/unloaded whenever your web application is loaded/unloaded. Moreover, each copy of the log4j classes will be treated as a separate unrelated copy by the JVM. Under Tomcat 3.x and 4.x, you should place the log4j.xml or log4j.properties under the WEB-INF/classes directory of your web- applications. Log4j will find the properties file and initialize itself. WEB-INF Lib • log4j-version.jar Classes • log4j.xml/log4j.properties
  • 11. Slide 11 Log4j And Class Loaders In Application Servers
  • 12. Slide 12 The Java class loader delegation model gives precedence to parent class loaders. This means that if log4j.jar is available on the CLASSPATH, or under JAVA_HOME/jar/lib/ext or to any class loader which is a parent of the webapplication's class loader, then that copy of log4j will be loaded into memory and shared by all web-applications.
  • 13. Slide 13 Log4j And The “Logging Separation” Problem
  • 14. Slide 14 In a separated logging environment, each web-application can configure log4j in different ways such that the configuration of one web-application cannot interfere with the logging configuration of another web application. Since time immemorial users have struggled to control the logging configuration of multiple web-applications deployed on the same Servlet Container (e.g. Tomcat).
  • 15. Slide 15 Log4j Implementation In Web Applications
  • 16. Slide 16 Assuming each web-application is loaded by a distinct class loader, then placing a copy of log4j.jar under WEB-INF/lib/ directory of each web- application will automatically result in distinct log4j-logging universes. Simply put, each webapplication will load its own distinct copy of log4j classes into memory. All such copies are invisible and inaccessible to each other.
  • 17. Slide 17 Log4j allows different applications live in their own parallel universe by using a different LoggerRepository for each application. Given that each hierarchy (i.e. logger repository) manages its own separate logger tree, logging separation is a direct consequence of this approach. The Java Servlet API mandates a unique ServletContext for each web application. Thus, a web-application can set an attribute for a Servlet context which can be shared by all Servlet and jsp pages of a web-application but remain invisible to other web-applications. In particular, an initialization Servlet can create, set and configure an independent logger hierarchy in the Servlet context. Subsequently, other Servlet can obtain the hierarchy stored in the Servlet context in order to retrieve logger instances. These logger instances will be attached to the particular hierarchy specific to the web-application.
  • 18. Slide 18 This solution relies on the Servlet Container to keep track of the execution context and provide a different logging environment for each context. Each web application has its own class loader and Tomcat sets the Thread Context Classloader, or TCL, to be the class loader of the currently executing web application. Servlet Container provides a separate hierarchy instance for each web-application. Each logger object that log4j creates is attached to a hierarchy. The Hierarchy class implements the LoggerRepository interface by arranging logger objects in a tree according to their name.
  • 19. Slide 19 Log4j And The “Log Rotation” Problem
  • 20. Slide 20 The log file rotation on Application servers fails with following error log4j: ERROR Failed to rename [<file name>.log] to [<file name>.log.2010-03- 23].
  • 21. Slide 21 Log4j And “Multiple Line Printing” Problem
  • 22. Slide 22 Logger Added Additivity Output Targets Comment Name Appenders Flag The root logger does root A1 not applicable A1 not have a parent. Appenders in root x A-x1, A-x2 true A1, A-x1, A-x2 are added to appenders in "x". Appenders of "x" and x.y none true A1, A-x1, A-x2 root. A1, A-x1, A-x2, A- Appenders in "x.y.z", x.y.z A-xyz1 true xyz1 "x" and root. No appender accumulation as the security A-sec false A-sec additivity flag is set to false. Only appenders of "security" as the security.ACL none true A-sec additivity flag in "security" is set to false.
  • 23. Slide 23 Dated Logger Implementation In Web Applications
  • 24. Slide 24 DatedFileAppender is an "appender" object designed for use with the Apache Log4j logging system. It provides an Apache Tomcat style FileLogger implementation that differs from the file loggers provided with Log4j. While the DatedFileAppender was written with Apache Tomcat in mind, it does not depend on Tomcat and may be used in any other environment. How to use it? •Copy the datedFileAppender-1.0.2.jar to the same directory as your other application jar files and add the jar file name to your CLASSPATH. •Modify your log4j.properties file to use the DatedFileAppender class (see below for configuration options).
  • 26. Slide 26 Still Have Any Question? 