• 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
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Setting up logging

 
Ranch Hand
Posts: 681
1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am trying to set up logging:

I have a control servlet
with the line of code String prefix = getServletContext().getRealPath("/");

that returns prefix = "C:\jakarta-tomcat-5.0.19\webapps\WebBay"

Is there anyway to interrogate the context that will return
C:\jakarta-tomcat-5.0.19 only. The reason is that I can then append log to the prefix and open a logging file in C:\jakarta-tomcat-5.0.19\log.

Otherwise I guess its playing around with string functions.

Thanks for any help.

Tony
 
Ranch Hand
Posts: 3695
IntelliJ IDE Java Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Is there a reason you're not using a perfectly good, highly configurable, and very performant logging package (like log4j )

As for what you're asking, there is no built-in way to get this. You'll have to parse the String yourself. One gotcha: Tomcat can be configured to serve a web application from *anywhere*, not necessarily just from the CATALINA_HOME directories. So if you expect something of the form:
c:\tomcat\webapps\foo
what happens when the application is actually deployed to:
c:\foo ?
c:\webapps\foo?

A second gotcha is that Tomcat can be configured to run from a packed WAR file, in which case getRealPath() will return null.

One option is to specify (as part of your application's setup specs or 'administrators guide') a variable in JNDI provides an absolute path to find the log file directory. So it would be a configuration option in web.xml, and your code would then retrieve the path to use from this file.

But if we're going that far, I'd start to really look hard at log4j.

If your concern is someone being able to retrieve your logs by entering (guessing) the filename and typing it directly into a browser window, you can place your logs in WEB-INF/logs (that's what I do, with log4j).
[ May 25, 2004: Message edited by: Mike Curwen ]
 
Tony Evans
Ranch Hand
Posts: 681
1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Mike, I will look at log4, I have had a brief look but all the examples I looked at set logging to standard putput not a file.

I will also look at JNDI for mapping the path name for the file.

Tony
 
Mike Curwen
Ranch Hand
Posts: 3695
IntelliJ IDE Java Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I like this one:
http://www.vipan.com/htdocs/log4jhelp.html

It shows using log4j and files.
 
Tony Evans
Ranch Hand
Posts: 681
1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Mike,

got it up and running last night, I passed in the path and file name as a parameter in the web.xml file.

Tony
 
And will you succeed? Yes you will indeed! (98 and 3/4 % guaranteed) - Seuss. tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic