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
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.
System. setProperty("{my. log", "C:/logfile. log");
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.
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.
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With