Configure log4j along with log rotation on Tomcat Web App in Azure App Service
On Azure App Service Web App deployed with Tomcat (from marketplace), the default logger is set to java.util.logging. If your application is setup with log4j, then you will need to make some changes for it to work. You can use log4j to rotate your logs as well upto the minute.
Here is how you can achieve this:
Deploy Tomcat 8 Web App from gallery/marketplace.
Download these jars:
a. tomcat-juli.jar and tomcat-juli-adapters.jar from this url: https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.28/bin/extras/
b. Download log4j-1.2.17.zip from here: https://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip
Unzip or extract log4j-1.2.17.jar from log4j-1.2.17.zip.
Copy (replace) tomcat-juli.jar to D:\home\site\wwwroot\bin\apache-tomcat-8.0.28\bin folder on your Azure Web App.
Copy tomcat-juli-adapters.jar and log4j-1.2.17.jar to D:\home\site\wwwroot\bin\apache-tomcat-8.0.28\lib folder on your Azure Web App.
Add a file log4j.properties to D:\home\site\wwwroot\bin\apache-tomcat-8.0.28\lib folder on your Azure Web App.
Sample log4j.properties file is below for your reference:
log4j.debug=true
log4j.rootLogger=INFO, CATALINA, CONSOLE
# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.encoding=UTF-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d [%t] %-5p %c - %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]= INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]= INFO, HOST-MANAGER
Stop your Web App and rename logging.properties in D:\home\site\wwwroot\bin\apache-tomcat-8.0.28\conf folder to logging.properties.juli
Start your application and you should see the log files under D:\home\site\wwwroot\bin\apache-tomcat-8.0.28\logs folder which rotate every min.
Comments
- Anonymous
May 09, 2016
Hi, I can't find D:\home\site\wwwroot\bin directory all i see in wwwroot is webapps, App_Data - Anonymous
May 16, 2016
Hi Chandra, That tells me that you have enabled Tomcat from Application Settings instead of deploying it from MarketPlace. This only works for MarketPlace deployed Tomcat.- Anonymous
May 18, 2016
Hi Srikanth, Thanks, I have enabled tomcat from application settings, is there any other way to configure log4j logs for this type of configuration.
- Anonymous