11 Replies Latest reply on Apr 26, 2011 11:51 AM by yadav k

    Jboss log-rotation

    Linus Newbie

      Is it possible to make the jboss server to not write over the server.log file when I stop and start the server ??

        • 1. Re: Jboss log-rotation
          jaikiran pai Master

          Yes. In the log4j.xml file present at %JBOSS_HOME%/server/default/conf, change the following

          <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
           <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
           <param name="File" value="${jboss.server.log.dir}/server.log"/>
           <param name="Append" value="false"/>
           <param name="MaxFileSize" value="500KB"/>
           <param name="MaxBackupIndex" value="1"/>
          
           <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
           </layout>
           </appender>


          to

          <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
           <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
           <param name="File" value="${jboss.server.log.dir}/server.log"/>
           <param name="Append" value="true"/>
           <param name="MaxFileSize" value="500KB"/>
           <param name="MaxBackupIndex" value="1"/>
          
           <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
           </layout>
           </appender>


          • 2. Re: Jboss log-rotation
            yadav k Newbie

            I want to rotate my log file on daily basis below is my log4j.xml file .

            pls help me out and e-mail me at kumartoget@gmail.com

            <?xml version="1.0" encoding="UTF-8"?>

            <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

             

            <!-- ===================================================================== -->

            <!--                                                                       -->

            <!--  Log4j Configuration                                                  -->

            <!--                                                                       -->

            <!-- ===================================================================== -->

             

            <!-- $Id: jboss-log4j.xml 75507 2008-07-08 20:15:07Z stan.silvert@jboss.com $ -->

             

            <!--

               | For more configuration infromation and examples see the Jakarta Log4j

               | owebsite: http://jakarta.apache.org/log4j

            -->

             

            <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

             

               <!-- ================================= -->

               <!-- Preserve messages in a local file -->

               <!-- ================================= -->

             

                <!-- A size based file rolling appender -->

                <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">

                  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                  <param name="File" value="${jboss.server.log.dir}/server.log"/>

                  <param name="Append" value="false"/>

                  <param name="MaxFileSize" value="5000KB"/>

                  <param name="MaxBackupIndex" value="7"/>

              

                  <layout class="org.apache.log4j.PatternLayout">

                    <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

                  </layout>       

               </appender>

               <!-- A time/date based rolling appender -->

               <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">

                  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                  <param name="File" value="${jboss.server.log.dir}/server.log"/>

                  <param name="Append" value="false"/>

             

                  <!-- Rollover at midnight each day -->

                  <param name="DatePattern" value="'.'yyyy-MM-dd"/>

             

                  <!-- Rollover at the top of each hour

                  <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

                  -->

             

                  <layout class="org.apache.log4j.PatternLayout">

                     <!-- The default pattern: Date Priority [Category] Message\n -->

                     <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

             

                     <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n

                     <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

                      -->

                  </layout>

               </appender>

                -->

             

               <!-- ============================== -->

               <!-- Append messages to the console -->

               <!-- ============================== -->

             

               <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">

                  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                  <param name="Target" value="System.out"/>

                  <param name="Threshold" value="INFO"/>

             

                  <layout class="org.apache.log4j.PatternLayout">

                     <!-- The default pattern: Date Priority [Category] Message\n -->

                     <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>

                  </layout>

               </appender>

             

               <!-- ====================== -->

               <!-- More Appender examples -->

               <!-- ====================== -->

             

               <!-- Buffer events and log them asynchronously

               <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">

                 <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 <appender-ref ref="FILE"/>

                 <appender-ref ref="CONSOLE"/>

                 <appender-ref ref="SMTP"/>

               </appender>

               -->

             

               <!-- EMail events to an administrator

               <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">

                 <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 <param name="Threshold" value="ERROR"/>

                 <param name="To" value="admin@myhost.domain.com"/>

                 <param name="From" value="nobody@myhost.domain.com"/>

                 <param name="Subject" value="JBoss Sever Errors"/>

                 <param name="SMTPHost" value="localhost"/>

                 <param name="BufferSize" value="10"/>

                 <layout class="org.apache.log4j.PatternLayout">

                   <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>

                 </layout>

               </appender>

               -->

             

               <!-- Syslog events

               <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">

                 <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 <param name="Facility" value="LOCAL7"/>

                 <param name="FacilityPrinting" value="true"/>

                 <param name="SyslogHost" value="localhost"/>

                 <layout class="org.apache.log4j.PatternLayout">

                   <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>

                 </layout>

               </appender>

               -->

             

               <!-- Log events to JMS (requires a topic to be created)

               <appender name="JMS" class="org.apache.log4j.net.JMSAppender">

                 <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 <param name="Threshold" value="ERROR"/>

                 <param name="TopicConnectionFactoryBindingName" value="java:/ConnectionFactory"/>

                 <param name="TopicBindingName" value="topic/MyErrorsTopic"/>

               </appender>

               -->

             

               <!-- Log events through SNMP

               <appender name="TRAP_LOG" class="org.apache.log4j.ext.SNMPTrapAppender">

                 <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 <param name="ImplementationClassName" value="org.apache.log4j.ext.JoeSNMPTrapSender"/>

                 <param name="ManagementHost" value="127.0.0.1"/>

                 <param name="ManagementHostTrapListenPort" value="162"/>

                 <param name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/>

                 <param name="LocalIPAddress" value="127.0.0.1"/>

                 <param name="LocalTrapSendPort" value="161"/>

                 <param name="GenericTrapType" value="6"/>

                 <param name="SpecificTrapType" value="12345678"/>

                 <param name="CommunityString" value="public"/>

                 <param name="ForwardStackTraceWithTrap" value="true"/>

                 <param name="Threshold" value="DEBUG"/>

                 <param name="ApplicationTrapOID" value="1.3.6.1.4.1.24.12.10.22.64"/>

                 <layout class="org.apache.log4j.PatternLayout">

                        <param name="ConversionPattern" value="%d,%p,[%t],[%c],%m%n"/>

                 </layout>

               </appender>

               -->

             

               <!--  Emit events as JMX notifications

               <appender name="JMX" class="org.jboss.monitor.services.JMXNotificationAppender">

                  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 

                  <param name="Threshold" value="WARN"/>

                  <param name="ObjectName" value="jboss.system:service=Logging,type=JMXNotificationAppender"/>

                 

                  <layout class="org.apache.log4j.PatternLayout">

                     <param name="ConversionPattern" value="%d %-5p [%c] %m"/>

                  </layout>

               </appender>

               -->

              

               <!-- ================ -->

               <!-- Limit categories -->

               <!-- ================ -->

             

               <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->

               <category name="org.apache">

                  <priority value="INFO"/>

               </category>

             

               <!-- Limit the jacorb category to WARN as its INFO is verbose -->

               <category name="jacorb">

                  <priority value="WARN"/>

               </category>

              

               <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->

               <category name="org.jgroups">

                  <priority value="WARN"/>

               </category>

              

               <!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->

               <category name="org.quartz">

                  <priority value="INFO"/>

               </category>

             

               <!-- Limit JSF logging to DEBUG.  FINER and FINEST will not be logged -->

               <category name="javax.enterprise.resource.webcontainer.jsf">

                  <priority value="DEBUG" />

               </category>

                           

               <!-- Limit JBoss categories

               <category name="org.jboss">

                  <priority value="INFO"/>

               </category>

               -->

             

               <!-- Limit the JSR77 categories -->

               <category name="org.jboss.management">

                  <priority value="INFO"/>

               </category>

             

               <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]

               <category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">

                 <priority value="TRACE"/>

               </category>

               -->

              

               <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose -->

               <category name="org.jboss.serial">

                  <priority value="INFO"/>

               </category>

              

               <!-- Decrease the priority threshold for the org.jboss.varia category

               <category name="org.jboss.varia">

                 <priority value="DEBUG"/>

               </category>

               -->

             

               <!-- Enable JBossWS message tracing

               <category name="org.jboss.ws.core.MessageTrace">

                <priority value="TRACE"/>

               </category>

               -->

             

               <!--

                  | An example of enabling the custom TRACE level priority that is used

                  | by the JBoss internals to diagnose low level details. This example

                  | turns on TRACE level msgs for the org.jboss.ejb.plugins package and its

                  | subpackages. This will produce A LOT of logging output.

                  |

                  | Note: since jboss AS 4.2.x, the trace level is supported natively by

                  | log4j, so although the custom org.jboss.logging.XLevel priority will

                  | still work, there is no need to use it. The two examples that follow

                  | will both enable trace logging.

               <category name="org.jboss.system">

                 <priority value="TRACE" class="org.jboss.logging.XLevel"/>

               </category>

               <category name="org.jboss.ejb.plugins">

                 <priority value="TRACE"/>

               </category>

               -->

             

               <!--

                   | Logs these events to SNMP:

                       - server starts/stops

                       - cluster evolution (node death/startup)

                       - When an EJB archive is deployed (and associated verified messages)

                       - When an EAR archive is deployed

                      

               <category name="org.jboss.system.server.Server">

                 <priority value="INFO" />

                 <appender-ref ref="TRAP_LOG"/>

               </category>

             

               <category name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">

                 <priority value="INFO" />

                 <appender-ref ref="TRAP_LOG"/>

               </category>

             

               <category name="org.jboss.deployment.MainDeployer">

                 <priority value="ERROR" />

                 <appender-ref ref="TRAP_LOG"/>

               </category>

              

               <category name="org.jboss.ejb.EJBDeployer">

                 <priority value="INFO" />

                 <appender-ref ref="TRAP_LOG"/>

               </category>

              

               <category name="org.jboss.deployment.EARDeployer">

                 <priority value="INFO" />

                 <appender-ref ref="TRAP_LOG"/>

               </category>

               -->

             

               <!-- Clustering logging -->

               <!-- Uncomment the following to redirect the org.jgroups and

                  org.jboss.ha categories to a cluster.log file.

             

               <appender name="CLUSTER" class="org.jboss.logging.appender.RollingFileAppender">

                 <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                 <param name="File" value="${jboss.server.log.dir}/cluster.log"/>

                 <param name="Append" value="false"/>

                 <param name="MaxFileSize" value="500KB"/>

                 <param name="MaxBackupIndex" value="1"/>

             

                 <layout class="org.apache.log4j.PatternLayout">

                   <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

                 </layout>

               </appender>

               <category name="org.jgroups">

                 <priority value="DEBUG" />

                 <appender-ref ref="CLUSTER"/>

               </category>

               <category name="org.jboss.ha">

                 <priority value="DEBUG" />

                 <appender-ref ref="CLUSTER"/>

               </category>

               -->

              

               <!-- ======================= -->

               <!-- Setup the Root category -->

               <!-- ======================= -->

             

               <root>

                  <appender-ref ref="CONSOLE"/>

                  <appender-ref ref="FILE"/>

               </root>

             

            </log4j:configuration>

            • 3. Re: Jboss log-rotation
              Peter Johnson Master

              >>I want to rotate my log file on daily basis

              The default jboss-log4j.xml file already rotates the log file daily.

               

              >>pls help me out and e-mail me at

              NO! If we email the solution to you then others who come across your post will not benefit from the solution.

               

              Also, it is usually better to post only the changes you made to a configuration file, and not post the whole file. There is no way I am going to compare what you posted to the original to see what you changed. If you want us to help you, you need to make our job as easy as possible.

              • 4. Re: Jboss log-rotation
                yadav k Newbie

                This is my original Log4j.xml file. Can you pls recommand me what changes I should do in order to rotate the log file on daily basis. Does the Size based rolling appender & time based rolling appender work together?

                 

                <!-- A size based file rolling appender -->

                    <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">

                      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                      <param name="File" value="${jboss.server.log.dir}/server.log"/>

                      <param name="Append" value="false"/>

                      <param name="MaxFileSize" value="5000KB"/>

                      <param name="MaxBackupIndex" value="7"/>

                  

                      <layout class="org.apache.log4j.PatternLayout">

                        <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

                      </layout>       

                   </appender>

                   <!-- A time/date based rolling appender -->

                   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">

                      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                      <param name="File" value="${jboss.server.log.dir}/server.log"/>

                      <param name="Append" value="false"/>

                 

                      <!-- Rollover at midnight each day -->

                      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

                 

                      <!-- Rollover at the top of each hour

                      <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

                      -->

                 

                      <layout class="org.apache.log4j.PatternLayout">

                         <!-- The default pattern: Date Priority [Category] Message\n -->

                         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

                 

                         <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n

                         <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

                          -->

                      </layout>

                   </appender>

                    -->

                 

                   <!-- ============================== -->

                   <!-- Append messages to the console -->

                   <!-- ============================== -->

                 

                   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">

                      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                      <param name="Target" value="System.out"/>

                      <param name="Threshold" value="INFO"/>

                 

                      <layout class="org.apache.log4j.PatternLayout">

                         <!-- The default pattern: Date Priority [Category] Message\n -->

                         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>

                      </layout>

                   </appender>

                • 5. Re: Jboss log-rotation
                  Peter Johnson Master

                  >>Does the Size based rolling appender & time based rolling appender work together?

                  No. You cannot have two appender with the same name. As far as I can tell, your DailyRollingFileAppender setup is correct for a new log file each day.

                   

                  By the way, which version of JBoss AS? From the log file name I am assuming 4.0.x

                  • 6. Re: Jboss log-rotation
                    yadav k Newbie

                    We are using JBoss AS 4.2.3. I want to log to write according to date using DailyAppender then I want the same log to rotate using the Rolling appender. Is it possible? If possible can you explain how to do it in detail. Below is my Daily appender and Rolling appender.

                     

                    <!-- A size based file rolling appender -->

                        <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">

                          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                          <param name="File" value="${jboss.server.log.dir}/server.log"/>

                          <param name="Append" value="false"/>

                          <param name="MaxFileSize" value="5000KB"/>

                          <param name="MaxBackupIndex" value="7"/>

                      

                          <layout class="org.apache.log4j.PatternLayout">

                            <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

                          </layout>       

                       </appender>

                     

                       <!-- A time/date based rolling appender -->

                       <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">

                          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                          <param name="File" value="${jboss.server.log.dir}/server.log"/>

                          <param name="Append" value="false"/>

                     

                          <!-- Rollover at midnight each day -->

                          <param name="DatePattern" value="'.'yyyy-MM-dd"/>

                     

                          <!-- Rollover at the top of each hour

                          <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

                          -->

                     

                          <layout class="org.apache.log4j.PatternLayout">

                             <!-- The default pattern: Date Priority [Category] Message\n -->

                             <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

                     

                             <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n

                             <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

                              -->

                          </layout>

                       </appender>

                    • 7. Re: Jboss log-rotation
                      yadav k Newbie

                      If I set my Time based Appender I can see that its writes the log file everyday at mid-night. But it is not doing the rotation of the log file. I am deleting the Log files manually. Is there any way ? the Time based Appender rotates the log files automatically my specifying some parameters.

                      • 8. Re: Jboss log-rotation
                        Peter Johnson Master

                        There is no way to limit the DailyRollingFileAppender to a given number of log file. That is, there is no MaxBackupIndex value for it. The best thing to do is have a script that runs shortley after midnight and deletes the old log file(s) that you no longer need.

                        • 9. Re: Jboss log-rotation
                          yadav k Newbie

                          So you say that If I go with the DailyRollingFileAppender I will not be able to rotate the log files right.

                           

                          Then I will go with the Sizebased RollingFileAppender then Because it rotates the log files based on the max size and max backup index.

                           

                          Do you think its a good Idea?

                          • 10. Re: Jboss log-rotation
                            Peter Johnson Master

                            You should first decide what your requirements are. If you decide that using a RollingFileAppender with a given size and max backup count is sufficient for your logging needs, then that is what you should use.

                             

                            Usually people use daily logging if they automatically backup or store older log files which they retain for a certain amount of time. Other people, who are more concerned with limiting the amount of disk space dedicated to the log will use the rolling file appender.

                            • 11. Jboss log-rotation
                              yadav k Newbie

                              I have changed my log4j.xml configuration so that it rotates the log file automatically after the specified size. But after I changed the log4j.xml  the log file stopped writing log. Below is my log4j.xml file & let me know if i need to do any changes.

                               

                              <!-- A size basedfile rolling appender -->

                                    <appender name="FILE"class="org.jboss.logging.appender.RollingFileAppender">

                                      <errorHandlerclass="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                                      <param name="File"value="${jboss.server.log.dir}/server.log"/>

                                      <param name="Append"value="false"/>

                                      <param name="MaxFileSize"value="20KB"/>

                                      <paramname="MaxBackupIndex" value="2"/>

                                      <layoutclass="org.apache.log4j.PatternLayout">

                                        <param name="ConversionPattern"value="%d %-5p [%c] %m%n"/>

                                      </layout>     

                                 </appender>


                                 <!-- A time/date based rolling appender

                                 <appender name="FILE"class="org.jboss.logging.appender.DailyRollingFileAppender">

                                    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

                                    <param name="File"value="${jboss.server.log.dir}/server.log"/>

                                    <param name="Append"value="true"/>

                               

                                    <!-- Rollover at midnight each day-->

                                    <param name="DatePattern"value="'.'yyyy-MM-dd"/>

                               

                                    <!-- Rollover at the top of each hour

                                    <param name="DatePattern"value="'.'yyyy-MM-dd-HH"/>

                                    -->

                                    <layoutclass="org.apache.log4j.PatternLayout">

                                       <!-- The default pattern: DatePriority [Category] Message\n -->

                                       <param name="ConversionPattern"value="%d %-5p [%c] %m%n"/>

                               

                                       <!-- The full pattern: Date MSPriority [Category] (Thread:NDC) Message\n

                                       <paramname="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x)%m%n"/>

                                        -->

                                    </layout>

                                 </appender>

                                 --->