Last week, we had the author of TDD for a Shopping Website LiveProject. Friday at 11am Ranch time, Steven Solomon will be hosting a live TDD session just for us. See for the agenda and registration link
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Paul Clapham
  • Ron McLeod
  • Jeanne Boyarsky
  • Tim Cooke
Sheriffs:
  • Liutauras Vilda
  • paul wheaton
  • Henry Wong
Saloon Keepers:
  • Tim Moores
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Frits Walraven
Bartenders:
  • Piet Souris
  • Himai Minh

Log4j and Tomcat problem

 
Ranch Hand
Posts: 40
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'm using Tomcat 5.0.30 running on Ubuntu Linux (6.06).

I've made a small webapp which runs fine under Tomcat on Windows, but on Linux I've got a problem with log4j.

I've put "commons-logging-1.1.jar" and "log4j-1.2.13.jar" in the webapps libs directory. In the classes directory I've put log4j.properties which point to the log file: /var/log/ne/ne.log

The problem is that the webapp won't even run as log as the log4j.properties is in the class path. If I remove log4j.properties from the classes directory the application will run, but there's no logging.

This looks like a Tomcat problem, since the webapp runs fine on windows. There's also no error messages in any of the files in /var/log/tomcat5/

What's wrong?

My log4j.properties look like this:

# The log4j configuration file.

log4j.rootCategory=DEBUG, FileApp

# FileApp
log4j.appender.FileApp=org.apache.log4j.RollingFileAppender

# File appender
log4j.appender.FileApp.File=/var/log/ne/ne.log

# Max filesize before creating new log file.
log4j.appender.FileApp.MaxFileSize=10MB

# How many backup files to keep
log4j.appender.FileApp.MaxBackupIndex=10

# Log layout
log4j.appender.FileApp.layout=org.apache.log4j.PatternLayout
log4j.appender.FileApp.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-35.35F | %25M() | %-4L | %m%n
 
author
Posts: 4323
39
jQuery Eclipse IDE Java
 
Egil Poma
Ranch Hand
Posts: 40
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I've changed permission so that everyone can do everything with the log file and the directory it's in (/var/log/ne). Tomcat is also started with the root user.

I think this is a classpath issue, because when I remove "commons-logging-1.1.jar" from the webapp's classpath (WEB-INF/lib) it will run fine but without logging.

I see that in CATALINA_HOME/bin (which I assume is Tomcats class path?) there's a file called "commons-logging-api.jar". I don't know if I can safely remove that file without breaking something else?

I've not added the log4j.jar to CATALINA_HOME/common/lib since it's in the webapp's class path.

I'll try to add log4j.DEBUG=true to the log4j.properties as it will also force log4j to print debug info to stdout.
 
Egil Poma
Ranch Hand
Posts: 40
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I give up.... I've tried everything without getting log4j to work.

If I remove both log4j.jar and commons-logging.jar from the webapp classpath (WEB_INF/lib) I don't get any errors, so it looks like they're already included in tomcats classpath.

I've tried changing the log4j.properties to write to system.out (/var/log/tomcat5/catalina.out) without luck:

# The log4j configuration file.


Then I tried putting log4j.properties in $CATALINA_HOME/shared/classes and $CATALINA_HOME/common/classes, but it still would'nt log anything.

I'm almost starting to cry now.... I hope someone can chime in because I really have run out of ideas.

How can I test if log4j.properties really is in the classpath? Perhaps that's what's wrong...
 
Egil Poma
Ranch Hand
Posts: 40
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Found a solution:
I had installed Tomcat through the Ubuntu Synaptic Package manager. It would seem this was not a healthy install, because I just uninstalled it and installed Tomcat 5.5 manually and everything worked perfectly. What the problem was I never figured out since the install was scattered all over the hard drive.

The only thing that bothers me now is that if I open up /var/log/ne/ne.log in a text editor, say vi, and edit it, log4j will stop logging to the file. I have to restart the webapp to make it start logging again. Anyone know what might cause that?
 
Ranch Hand
Posts: 456
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hi egil,

sorry no help, just want to say thank you for your good style - even though i had no clue what your problem was (like you ;-)) i'm following your thread with interest and am really appreciating that you are updating it.

thanks,
jan
 
I can't take it! You are too smart for me! Here is the tiny ad:
free, earth-friendly heat - a kickstarter for putting coin in your pocket while saving the earth
https://coderanch.com/t/751654/free-earth-friendly-heat-kickstarter
reply
    Bookmark Topic Watch Topic
  • New Topic