Ahhh... ok. Well, it's not going to make any attempt to look up from the classpath if you provide -Dlog4j.configuration. If you exclude that system property and just put the config file in the classpath (the default package, or "no package"), Log4j will pick it up automagically. By supplying the property, you are telling Log4j to forget doing any automagical lookup and just use what you provided.

Now, the strange thing is that "-Dlog4j.configuration="mydirectory\config\log4j.properties" ever works. Log4j expects a valid URL. Well, actually it's Java itself that expects a valid URL. Apparently, Java is able to take that and create the equivalent. Something like...

file:///./mydirectory/config/log4j.properties

Or, more likely, the fully qualified system path such as....

file:///C:/bea/apps/mydirectory/config/log4j.properties


...And why it would work when running via the command line -vs- as a system service, assuming the service sets the startup directory the same as the command line version did, is beyond me. I still have a sneaking suspicion that the startup directory was different in the two situations.

Anyway, if you provide the -Dlog4j.configuration system property, you should always make it a valid URL and always make it an absolute path. You've already experience the pain and confusion relative paths can cause.

Anyhow, glad you have things up and running.

later,

Jake

At 05:15 PM 9/28/2006, you wrote:
>Keeping everything same, I just changed the way I was providing the
>path to log4j.properties file.
>
>An example with a made-up directory path.
>
>Weblogic domain directory: D:\bea\mydomain
>Path to log4j.properties file:
>D:\bea\mydomain\mydirectory\config\log4j.properties.
>
>Prior to fix, I passed:
>-Dlog4j.configuration="mydirectory\config\log4j.properties". Btw, I
>pass log4j configuration in this way when I run weblogic manually.
>In the fix, I passed:
>-Dlog4j.configuration="file:///D:\bea\mydomain\mydirectory\config\log4
>j.properties"
>
>In the static block of class org.apache.log4j.LogManager, the path to
>log4j.properties was taken as a url. Snippet from LogManager is pasted.
>line 108:   try {
>      url = new URL(configurationOptionStr);
>    } catch (MalformedURLException ex) {
>      // so, resource is not a URL:
>      // attempt to get the resource from the class path
>      url = Loader.getResource(configurationOptionStr);
>    }
>
>So, I just changed the path from current directory to a file url. That
>fixed it. I tried putting log4j.properties file in system classpath.
>It didn't work and hence I took the file url approach. Any wild guess
>why log4j wouldn't pick up from classpath?
>
>Thanks,
>Abbas
>
>----- Original Message ----
>From: Jacob Kjome <[EMAIL PROTECTED]>
>To: Log4J Users List <[email protected]>; Mirza Abbas Raza
><[EMAIL PROTECTED]>
>Sent: Thursday, September 28, 2006 2:43:23 PM
>Subject: Re: log4j doesn't log files when weblogic is run as a windows service.
>
>
>I'm glad you figured it out.  But it would be nice to know what was happening
>before? Had you provided -Dlog4j.configuration to the command line previously
>or just counted on Log4j to auto-discover it on the classpath?
>
>Jake
>
>Quoting Mirza Abbas Raza <[EMAIL PROTECTED]>:
>
>> The fix is so simple. LogManager loads the properties file using the URL. I
>> just provided file url and it was all done. Thanks for your help, Jacob.
>> -Abbas
>>
>> ----- Original Message ----
>> From: Jacob Kjome <[EMAIL PROTECTED]>
>> To: Log4J Users List <[email protected]>; Mirza Abbas Raza
>> <[EMAIL PROTECTED]>
>> Sent: Wednesday, September 27, 2006 2:11:15 PM
>> Subject: Re: log4j doesn't log files when weblogic is run as a windows
>> service.
>>
>>
>> Did you ever try setting log4j.debug=true in your property file?  What does
>> it
>> spit out to the console?  I don't recall if you can set this as a system
>> property or not?  Look at LogManager.java for something like "log4j.debug".
>> In
>> that case, you could do -Dlog4j.debug=true.
>>
>> If you see no output to Weblogic's console log after setting it in the
>> properties file, then I would suspect that some other config file is getting
>> picked up in preference to your own.  In that case, hopefully the system
>> property would help.
>>
>>
>> Jake
>>
>> Quoting Mirza Abbas Raza <[EMAIL PROTECTED]>:
>>
>> > I think log4j.properties is being read by the application. I verified this
>> in
>> > the same way you mentioned.
>> >
>> > 1. Wrote a method in my Struts Action to read the "log4j.configuration"
>> from
>> > system variables. Using the value read by this variable, I did a
>> > fileinputstream and loaded into Properties. Then, I could read all the
>> > properties from the log4j.properties file.
>> > 2. In the same Struts Action, I 'stepped into' using eclipse debugger into
>> > Logger.getLogger(clazz) stack. Log4j tried to get an appender all the way
>> to
>> > the root, but didn't find one.
>> >
>> > thanks,
>> > Abbas
>> >
>> > ----- Original Message ----
>> > From: Jacob Kjome <[EMAIL PROTECTED]>
>> > To: Log4J Users List <[email protected]>; Mirza Abbas Raza
>> > <[EMAIL PROTECTED]>
>> > Sent: Wednesday, September 27, 2006 1:38:12 PM
>> > Subject: Re: log4j doesn't log files when weblogic is run as a windows
>> > service.
>> >
>> >
>> > It's probably that the config file never gets put in the classpath when you
>> > run
>> > as a service. I think you've claimed previously that you verified that it
>> > was
>> > in the classpath, but that's hard to believe.
>> >
>> > Why don't you do this. In some class (or a JSP), try to load up the config
>> > file
>> > as an inputstream from the classpath.  If you are able to find it when
>> > running
>> > as a service, you will have ruled out this as a problem.  However, if the
>> > inputstream is null, then it will be proven that the config file is not in
>> > the
>> > classpath.
>> >
>> >
>> > Jake
>> >
>> > Quoting Mirza Abbas Raza <[EMAIL PROTECTED]>:
>> >
>> > > Jacob,
>> > >
>> > > So, I got 1.2.14 version of log4j and ran the application as a service
>> and
>> > > manually. I plugged in eclipse debugger to see where the problem was. I
>> > found
>> > > that when I run manually, the appenders are getting created.
>> Specifically,
>> > > variable 'aai' has an instance of AppenderAttachableImpl for an appender,
>> > in
>> > > the callAppenders() api of Category class. However, 'aai' is null when
>> the
>> > > application is run as windows service. Appreciate your help.
>> > >
>> > > Thanks,
>> > > Abbas
>> > >
>> > >
>> > > ----- Original Message ----
>> > > From: Jacob Kjome <[EMAIL PROTECTED]>
>> > > To: Log4J Users List <[email protected]>
>> > > Sent: Monday, September 18, 2006 2:24:38 PM
>> > > Subject: Re: log4j doesn't log files when weblogic is run as a windows
>> > > service.
>> > >
>> > >
>> > > A few quesions/comments...
>> > >
>> > > 1.  What version of Log4j are you using?  I think at some point, there
>> was
>> > a
>> > > feature implemented which allowed Log4j to create any needed directories.
>> > > This
>> > > hadn't been the case previously.  I think it got implemented maybe post
>> > > 1.2.9,
>> > > but I'm not positive.  So, it might make sense that the directories got
>> > > created.
>> > >
>> > > 2.  Clearly Weblogic's service is setting the startup directory if you
>> find
>> > > your
>> > > directories being created under "mydomain".
>> > >
>> > > 3.  Are you sure that log4j.properties is getting picked up?  Is it
>> > possible
>> > > some other config file is getting picked up?  If log4j finds log4j.xml,
>> it
>> > > will
>> > > be used in preference to log4j.properties.  Also, try setting
>> > > log4j.debug=true.
>> > > Maybe you'll see some extra output. Add a console appender to make sure
>> > you
>> > > see
>> > > this output.  It should turn up in Weblogic's console log file.
>> > >
>> > >
>> > > Jake
>> > >
>> > > Quoting Mirza Abbas Raza <[EMAIL PROTECTED]>:
>> > >
>> > > > So, Jake, here is what I did but didn't succeed.
>> > > >
>> > > > Excerpt from log4j.properties file.
>> > > > # Specify the R log file
>> > > > log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
>> > > > log4j.appender.R.File=logs/node/mylog.log
>> > > > log4j.appender.DAILY.DatePattern='.'yyyy-MM-dd
>> > > >
>> > > > Scenario 1: Run as is.
>> > > > - checked C:\winnt\system32.
>> > > > - obviously no logs found.
>> > > >
>> > > > Scenario 2: Created directories logs/node in C:\winnt\system32.
>> > > > - stopped service and restarted.
>> > > > - no logs found in C:\winnt\system32\logs\node directory.
>> > > >
>> > > > Scenario 3: Changed log4j.appender.R.File=logs/node/mylog.log to
>> > > > D:\mydirectory\domains\mydomain/logs/node/mylog.log
>> > > > - stopped and restarted service.
>> > > > - no logs found  in
>> D:\mydirectory\domains\mydomain/logs/node/mylog.log.
>> > > >
>> > > > I couldn't find a way to specify the startup directory with the
>> weblogic
>> > > > utility or the Java Service Wrapper and hence couldn't test it.
>> However,
>> > I
>> > > > saw an interesting point in the properties for the service.
>> > > > "D:\mydirectory\domains\mydomain\wrapper.exe -s
>> > > > D:\mydirectory\domains\mydomain\conf\managedwrapper.conf". The
>> logs/node
>> > > > directory is located in mydomain directory. Wouldn't this point the
>> logs
>> > to
>> > > > the right directory?
>> > > >
>> > > > Thanks,
>> > > > Abbas
>> > > >
>> > > >
>> > > > ----- Original Message ----
>> > > > From: Jacob Kjome <[EMAIL PROTECTED]>
>> > > > To: Log4J Users List <[email protected]>; Mirza Abbas Raza
>> > > > <[EMAIL PROTECTED]>
>> > > > Sent: Monday, September 18, 2006 11:57:20 AM
>> > > > Subject: Re: log4j doesn't log files when weblogic is run as a windows
>> > > > service.
>> > > >
>> > > >
>> > > > I'll bet they *do* get created.  You just don't know where to look.
>> What
>> > > > does
>> > > > your config look like? Does it use relative paths to the files? Keep
>> in
>> > > > mind,
>> > > > relative paths are relative to the directory from which the JVM
>> started.
>> > > So,
>> > > > if
>> > > > you start on the command line, the path in the config file is relative
>> to
>> > > the
>> > > > current directory in the command shell.
>> > > >
>> > > > OTOH, When you start up using a service, unless you define the startup >> > > > directory, it will default to "C:\WINDOWS\system32" (or the equivalent
>> on
>> > > > your
>> > > > windows box).  Furthermore, if your path includes a directory name,
>> such
>> > as
>> > > > "./logs/mylog.log", and said directory doesn't exist already under
>> > > > "C:\WINDOWS\system32", then Log4j won't bother creating it for you.
>> You
>> > > have
>> > > > to make sure it exists before Log4j can write to the location.
>> > > >
>> > > > Look into that and let us know what you find.
>> > > >
>> > > > Jake
>> > > >
>> > > > Quoting Mirza Abbas Raza <[EMAIL PROTECTED]>:
>> > > >
>> > > > > All,
>> > > > >
>> > > > > The log4j framework doesn't seem to write to the logs when weblogic
>> is
>> > > run
>> > > > as
>> > > > > windows service. As I understand, the two things needed for the log4j
>> > > > > framework are:
>> > > > > - log4j.jar in classpath
>> > > > > - log4j.properties as -Dlog4j.configuration. It contains the
>> necessary
>> > > > > configuration for logging.
>> > > > >
>> > > > > Both of the above mentioned artifacts are found correctly configured
>> in
>> > > the
>> > > > > utilities that were used to create the windows service. I have used
>> > both
>> > > > bea
>> > > > > provided utility and Java Service Wrapper from Tanuki Software. When
>> > > > weblogic
>> > > > > is started after the service installation, log files that were
>> supposed
>> > > to
>> > > > be
>> > > > > created by log4j don't appear. The ironic part is that when weblogic
>> is
>> > > > > started manually, the log files do appear. Is there a known
>> workaround
>> > > for
>> > > > > this scenario? I appreciate any help.
>> > > > >
>> > > > > Environment info:
>> > > > > OS - Windows 2000 server
>> > > > > JDK - 1.4.2
>> > > > > Weblogic - 8.1
>> > > > > log4j - 1.2.7
>> > > > >
>> > > > > Thanks,
>> > > > > Abbas
>> > > > >
>> > > > >
>> > >
>> > >
>> > >
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > > For additional commands, e-mail: [EMAIL PROTECTED]
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> >
>> >
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>
>>
>>
>
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to