Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

log4j: package-specific logging

How can I set log4j to log to a different file according to package name?

for example:

com.myname.fred logs to fred.log com.myname.derek logs to derek.log 

I am using the properties file config format. At present it's set up for the server, and I want to leave that alone and add stuff for my logging to it.

Here's what the properties file looks like:

## ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements.  See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License.  You may obtain a copy of the License at ## ##    http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## ## $Rev: 564818 $ $Date: 2007-08-10 22:28:29 -0400 (Fri, 10 Aug 2007) $ ##  log4j.rootLogger=INFO, CONSOLE, FILE  log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=${org.apache.geronimo.log.ConsoleLogLevel} log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n  log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.Threshold=TRACE log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n  # # Note, changing log4j.appender.FILE.append=false will result in logs being # overwritten without archiving the previous version of the log. # log4j.appender.FILE.append=true log4j.appender.FILE.file=${org.apache.geronimo.server.dir}/var/log/geronimo.log log4j.appender.FILE.bufferedIO=false log4j.appender.FILE.maxBackupIndex=3 log4j.appender.FILE.maxFileSize=10MB  # # Example: enable trace logging from CONSOLE appender # #log4j.appender.CONSOLE.Threshold=TRACE#org.apache.geronimo.system.logging.log4j.XLevel  # # Example: enable trace messages from foo.bar category # #log4j.logger.foo.bar=TRACE#org.apache.geronimo.system.logging.log4j.XLevel  # Geronimo #This will help find connection leak problems #log4j.logger.org.apache.geronimo.connector.outbound=TRACE#org.apache.geronimo.system.logging.log4j.XLevel log4j.logger.org.apache.geronimo.system.logging.log4j.Log4jService=INFO  #### Eliminate any INFO level output during normal operation -- except the really relevant stuff #### #    We can change the Geronimo code to avoid this, but we have to just adjust the log levels for #    any third-party libraries. log4j.logger.org.apache.commons.digester=ERROR log4j.logger.org.apache.jasper.compiler.SmapUtil=WARN  # ActiveMQ log4j.logger.org.apache.activemq=WARN log4j.logger.org.apache.activemq.broker.jmx.ManagementContext=ERROR  # Don't need so much info on every web page that's rendered log4j.logger.org.mortbay=INFO log4j.logger.org.apache.pluto=INFO log4j.logger.org.apache.jasper=INFO  # Various Jetty startup/shutdown output log4j.logger.org.mortbay.http.HttpServer=WARN log4j.logger.org.mortbay.http.SocketListener=WARN log4j.logger.org.mortbay.http.ajp.AJP13Listener=WARN log4j.logger.org.mortbay.util.Container=WARN log4j.logger.org.mortbay.util.Credential=WARN log4j.logger.org.mortbay.util.ThreadedServer=WARN log4j.logger.org.mortbay.jetty.servlet.WebApplicationContext=WARN log4j.logger.org.mortbay.jetty.context=WARN  # Various Tomcat startup output log4j.logger.org.apache.catalina.realm.JAASRealm=WARN log4j.logger.org.apache.catalina.realm.RealmBase=WARN log4j.logger.org.apache.catalina.loader.WebappLoader=WARN log4j.logger.org.apache.catalina.startup.Embedded=WARN log4j.logger.org.apache.catalina.core.StandardEngine=WARN log4j.logger.org.apache.catalina.core.StandardHost=WARN log4j.logger.org.apache.jk.common.ChannelSocket=WARN log4j.logger.org.apache.jk.server.JkMain=WARN log4j.logger.org.apache.coyote.http11.Http11BaseProtocol=WARN log4j.logger.org.apache.coyote.http11.Http11Protocol=WARN log4j.logger.org.apache.catalina.core.ContainerBase=WARN log4j.logger.org.apache.catalina.core.StandardContext=WARN log4j.logger.org.apache.tomcat.util.net.SSLImplementation=WARN  # myfaces startup output log4j.logger.org.apache.myfaces.renderkit.html.HtmlRenderKitImpl=WARN log4j.logger.org.apache.myfaces.config.FacesConfigurator=WARN log4j.logger.org.apache.myfaces.webapp.StartupServletContextListener=WARN log4j.logger.org.apache.myfaces.webapp.StartupServletContextListener=WARN  # emits a spurious warn about null locale during startup of webapps log4j.logger.org.apache.myfaces.shared_impl.util.LocaleUtils=ERROR  # Emits a spurious WARN during startup on /some-path/* security mappings log4j.logger.org.apache.catalina.deploy.SecurityCollection=ERROR  # Prints the MBean Server ID log4j.logger.javax.management.MBeanServerFactory=WARN  # Prints the RMI connection URL log4j.logger.javax.management.remote.rmi.RMIConnectorServer=WARN log4j.logger.javax.management.remote.JMXServiceURL=WARN  # Prints various stuff during startup log4j.logger.org.apache.juddi.registry.RegistryServlet=WARN  # Prints various stuff when the portal is used log4j.logger.org.apache.pluto.portalImpl.Servlet=WARN  # Prints stuff for AJAX calls log4j.logger.uk.ltd.getahead.dwr.impl.DefaultConfiguration=WARN log4j.logger.uk.ltd.getahead.dwr.impl.ExecuteQuery=WARN log4j.logger.uk.ltd.getahead.dwr.util.Logger=WARN 
like image 946
Mark W Avatar asked Mar 14 '11 11:03

Mark W


People also ask

What is log4j package?

The log4j package is designed so that log statements can remain in shipped code without incurring a high performance cost. It follows that the speed of logging (or rather not logging) is capital. At the same time, log output can be so voluminous that it quickly becomes overwhelming.

How do you set log file path in log4j properties dynamically?

System. setProperty("{my. log", "C:/logfile. log");

What is difference between log4j and Log4j2?

Community support: Log4j 1. x is not actively maintained, whereas Log4j 2 has an active community where questions are answered, features are added and bugs are fixed. Automatically reload its configuration upon modification without losing log events while reconfiguring.

How do you set a log4j properties file location?

The file is named log4j. properties and is located in the $DGRAPH_HOME/dgraph-hdfs-agent/lib directory. The file defines the ROLLINGFILE appenders for the root logger and also sets the log level for the file. The level of the root logger is defined as INFO and attaches the ROLLINGFILE appender to it.


1 Answers

You have to create two new appenders and set additivity accordingly.

log4j.appender.FRED=org.apache.log4j.RollingFileAppender log4j.appender.FRED.File=/path/to/fred.log log4j.appender.FRED.layout=org.apache.log4j.PatternLayout  log4j.appender.DEREK=org.apache.log4j.RollingFileAppender log4j.appender.DEREK.File=/path/to/derek.log log4j.appender.DEREK.layout=org.apache.log4j.PatternLayout  log4j.additivity.com.myname.fred=false log4j.additivity.com.myname.derek=false  log4j.logger.com.myname.fred=DEBUG, FRED log4j.logger.com.myname.derek=DEBUG, DEREK 

Update: Just check if you need to add the below line.

log4j.rootLogger=DEBUG, R, FRED, DEREK 

Where R is your regular log file that logs everything except FRED and DEREK.

like image 109
adarshr Avatar answered Sep 28 '22 10:09

adarshr