-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Thomas,

On 2/21/19 07:20, Thomas Rohde wrote:
> Hi Chris,
> 
> -----Ursprüngliche Nachricht----- Von: Christopher Schultz
> [mailto:ch...@christopherschultz.net] Gesendet: Mittwoch, 20.
> Februar 2019 16:41 An: users@tomcat.apache.org Betreff: Re: Logging
> web applications with log4j 1.2
> 
>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
>>> 
>>> Thomas,
>>> 
>>> On 2/20/19 08:00, Thomas Rohde wrote:
>>>> I've some basic questions regarding the usage of log4j 1.2 in
>>>> Tomcat 8.5.
>>>> 
>>>> We are running more than one web application in Tomcat. Each
>>>>  application uses log4j via slf4j and ships the log4j.jar in
>>>> 
>>> WEB-INF/lib. The Tomcat itself uses JULI.
>>> 
>>> We are using a common log4j.xml file for configuration.
>>> 
>>> The file path is set as system property in CATALINA_OPTS as 
>>> follows: -Dlog4j.configuration=/path/to/file/log4j.xml
>>> 
>>> 1. Is this a valid setup or are there any side effects in 
>>> initialization log4j by the different WebAppClassLoaders?
>> 
>> You are not using classpath-based config-file-loading, so it
>> should not be a problem[*].
>> 
>>> 2. We are observing weird things in rolling the files hourly.
>>> The timestamp of the log messages doesn't fit to the timestamp
>>> suffix of the file. Why does this happen?
>> 
>> Possibly conflicting time zones, somewhere? Because log4j.jar is
>> in each application's class loader, they CAN have different
>> in-memory configurations.
> No there are no different time zones in use.

That's what I figured. I've never see anything quite like you
describe. I could imagine that the JVM has one time zone but the shell
is using another.

For example, if the JVM is convinced that the time zone is UTC but
when you are logged-into the server, your shell has
TZ=America/Los_Angeles, then you'll see a ~9 hour difference between
file timestamps and the filenames. Like this:

$ ls -l logs/

- -rw-r--r--   12345 Feb 19 16:01 log4j.log.2019-02-18
- -rw-r--r--   12345 Feb 20 16:00 log4j.log.2019-02-19
- -rw-r--r--   12345 Feb 21 16:01 log4j.log.2019-02-20

Note how each filename has the name you'd expect, but the timestamp
looks a little odd. If you look into each file, you'd see that e.g. in
the 2019-02-19 file, the timestamps go from 2019-02-19T00:00:00
through 2019-02-19T23:59:59 but it looks like the file was rotated 8
hours earlier. That's because it was rotated at 00:00 (PST) as
reckoned by the JVM, but at 16:01 in UTC.

My recommendation would be to set all of your timezones to the same
thing. UTC makes the most sense to me, but that's just my opinion.
Theoretically, all timestamps are interchangeable, right?

>> [*] While this will work, why would you ever want multiple 
>> applications to have their logging configuration all tied 
>> together? Why not separate the logging configuration into one 
>> config-per web application? OR are you trying to unify all
>> logging into the same file(s )?
> Yes I would like to do that, but I'm not sure how to achieve it 
> without putting the log4j.xml into the WAR file. Do you have any 
> hint?
I can think of several ways, but it depends upon how your application
initializes log4j.

If you specify where the configuration file is, directly, then you can
either change that to somewhere else, or you can replace that filename
with a parameter that you can set in web.xml -- say, in an
<init-param>. You *are* configuring log4j in a
ServletContextInitializer, right?

If you just do "new PropertyConfigurator()" (like I do), then it will
search the parent ClassLoader and that's it. In that case, you'll have
to arrange for the log4j.properties file to be present, there. Placing
it in the WAR file is an option. Another option would be to put the
file elsewhere, but then modify the Tomcat configuration to add
another directory to the ClassLoader, like this:

<Context>
  <Resources>
    <PostResources
      webAppMount="/"
        base="/path/to/app-specific-log-dir"
        className="org.apache.catalina.webresources.DirResourceSet"
  </Resources>
</Context>

Then you put your log4j.properties file in /path/to/app-specific-log-dir
.

Hope that helps,
- -chris
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlxuv/0ACgkQHPApP6U8
pFiiTA/+MesYHVHy1lHSzhxLylGC9q/vLXu2wykUQysUBh0GCbHqnftzytV5gKrd
GBwsPbbFSveGcn6VkhL/mJZJPsHAxGWB6pgoK4rYsjw1qVfUeDWr2XeC7AAVNFMC
0BXyS99u5CC0jlh+/Ps/SZMOZAby/hGfTuoFRD4VT6K3MmgtdAsbGVcci+ycLSLd
tOKWmxglu/0ylEc4fmxBDPygvmve/FD+elfSyqZ8VBri6UTlae++qcsnmBSeus8y
KqiHiZCWrZsn55FBhAsEJXQ1tvluxhpNYrcleEVXM/KZcH/g7eyNGdelFMJ4UVyk
cEM9dfWJdi74RJlZNN03CIWjJawI7IVZg0ghU/2C0ErwXlfjecA2vW0HZE2z/XtO
v+vJW2PXcM/pVef+Af5kf+f8wFGWeAaFVQhwQeSFEZQnG8Mfi8VaQifZd8X+ho9f
SshOywKZ4vDb2VmJrhg3aMwu9Q2BtggA+7fZ0n0/wJJJHj7qC9W8OI35hacSJJ1d
U+USkNNo9vhoF6/wqU+NCMxj7sApEJyIgR4+Vcfl4MFnMaVRthc1WsOiTraW6RuS
G7IJm1z/pSSjqR+Age2/0F/zAAqknjVmCxKzuQIIv66K6PYV4UncRJY0r9bSnMx6
43eGJmG+wTcH+R7IAXEi0+r9zVb7UbK6kqpvfD9SpFWD3Ijlb8Y=
=BT+f
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to