At 01:15 AM 11/24/2006, you wrote:
>Hi folks,
> I am very new log4j and i want to implement log4j in my
>module. I had gone through material in net.
> In my module i am having 5 to 6 servlets. For writting log4j
>code in web application, we have to provide the properties file like this.
>
><servlet>
> <servlet-name>BackupServlet</servlet-name>
> <servlet-class>BackupServlet</servlet-class>
> <init-param>
> <param-name>props</param-name>
>
><param-value>D:\www\tomcat5\webapps\ruleengine\WEB-INF\config.properti
>es</param-value>
> </init-param>
> </servlet>
>
> And in each servlet init() method, we have to write
the code like
>
>
>String props = config.getInitParameter("props");
> if(props == null || props.length() == 0 ||
> !(new File(props)).isFile()){
>
> System.err.println(
> "ERROR: Cannot read the configuration file. " +
> "Please check the path of the config init param in
>web.xml");
> throw new ServletException();
> }
> PropertyConfigurator.configure(props);
> log = Logger.getLogger(BackupServlet.class);
>
>
> I have few questions here,
>1. how can i to write some genralized method, so that it can be used
>in any servlet class.
> i.e i dont want to write "log =
>Logger.getLogger(BackupServlet.class);"
>for each servlet.
>
> 2.I am having so many classes in my module, for each class i cant
>write Logger.getLogger(xxxx.class) .
> Does any body knows please help me out.
>
1. Never use File I/O in a web application unless you have a *very*
good, well though out, reason. Load resources using the classloader
or servlet context as input streams or as URL's. Sticking to this as
much as possible will keep your code from becoming platform specific
and brittle.
2. Use non-static logger instances if you want to avoid having to
write getLogger(MyClass.class). A non-static logger can be written
as getLogger(this.getClass()). Watch out in cases where the logger
instance is a member of a Serializable class. You will need to mark
it transient (you should make a practice of this in any case) because
the logger instance itself is non-serializable.
3. If you have a base class that has a protected logger instance
member and write it as getLogger(this.getClass()), then you only have
to write this in the base class.
In any case, you should really read up on a Log4j a bit before
posting. I'm pretty sure you would have found this information with
the simplest of web searches.
Jake
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]