Re: shutdownHook and programmatic configuration

2014-06-05 Thread James Bellenger
Hi Matt.
Our environment is a custom scala application server. Our use case is the
same as most standalone java apps -- we just want to log stuff and have it
go somewhere. We're extremely vanilla in what we need from log4j -- it's
really just different combinations of console, rollingfile, and flume
appenders.

Rationale for some of our requirements, are in priority order:

*having shutdownHook disabled*
Our server registers its own jvm shutdown hook to know when to start
shutting itself down. Shutdown isn't always straight forward, so we need
log4j to keep running to capture logs.

*programmatic log4j configuration*
This is more of a proxy requirement -- the real need is to be able to
support both local and deployed environments without having repetition in
our logging configuration. We do this by having one file define global
things like log levels for different packages, and then multiple config
files for each supported appender. At runtime, we configure the root logger
with the global configuration, and then load config files for each appender
we need and attach it to the root logger.

*not depending on log4j.configurationFile*
More of an aesthetic reason than anything else. We're already have a lot of
code and log4j meta configuration going on, and the more ways we can
simplify that the better. Why depend on two ways of configuring log4j when
we might get away with just one?

Overall, our programmatic configuration approach has felt pretty far off
the typical configuration path, and tends to break in frequent and subtle
ways. Is it atypical to want DRY logging configurations? How do other
people approach this?


On Wed, Jun 4, 2014 at 10:32 PM, Matt Sicker boa...@gmail.com wrote:

 It's supposed to help clean up any resources and commit anything necessary.
 It sounds like you're having the opposite effect, though. Any details about
 environment or plugins that might help?


 On 4 June 2014 16:59, James Bellenger ja...@kixeye.com wrote:

  (sorry for the fat-fingered send earlier)
 
  Hello.
  Our environment depends on these things:
 
 - programmatic log4j configuration
 - having shutdownHook disabled
 - ideally: not having to depend on the log4j.configurationFile
 environment var
 
  I've had a hard time balancing all three of them.
  Generally, the first access on the rootLogger context installs a default
  configuration that always enables the shutdownHook, and there's not a
 clear
  means to disable it without falling back to the log4j.configurationFile
  property.  Some of the methods available for reconfiguration (onChange,
  setConfiguration), don't reset the shutdown hook.
 
  As a new user to the group, and out of curiosity, why does shutdownHook
  exist in the first place? It causes us to lose logs when the system is
  shutting down -- why is this on by default?
 
 
  On Wed, Jun 4, 2014 at 2:54 PM, James Bellenger ja...@kixeye.com
 wrote:
 
   Hello.
   Our environment depends on two things:
  
  - programmatic log4j configuration
  - having shutdownHook disabled
  - ideally: not having to depend on the log4j.configurationFile
  environment var
  
programmatic configuration of log4j2.
   In trying to remove any dependencies on the log4j.configurationFile env
   variable, I've found that there's not a good way to ensure that there
 is
  
 



 --
 Matt Sicker boa...@gmail.com



Re: shutdownHook and programmatic configuration

2014-06-05 Thread Matt Sicker
That doesn't sound too far off from what I'd expect is the case (or desired
case) in a lot of environments. You can use property placeholders in a lot
of places to be later configured through various means, and you can even
specify the configuration via JNDI.

In regards to the shutdown hook, perhaps it would be better to offer a
public API to shutdown instead? That way each use case can hook it into the
proper location.


On 5 June 2014 01:17, James Bellenger ja...@kixeye.com wrote:

 Hi Matt.
 Our environment is a custom scala application server. Our use case is the
 same as most standalone java apps -- we just want to log stuff and have it
 go somewhere. We're extremely vanilla in what we need from log4j -- it's
 really just different combinations of console, rollingfile, and flume
 appenders.

 Rationale for some of our requirements, are in priority order:

 *having shutdownHook disabled*
 Our server registers its own jvm shutdown hook to know when to start
 shutting itself down. Shutdown isn't always straight forward, so we need
 log4j to keep running to capture logs.

 *programmatic log4j configuration*
 This is more of a proxy requirement -- the real need is to be able to
 support both local and deployed environments without having repetition in
 our logging configuration. We do this by having one file define global
 things like log levels for different packages, and then multiple config
 files for each supported appender. At runtime, we configure the root logger
 with the global configuration, and then load config files for each appender
 we need and attach it to the root logger.

 *not depending on log4j.configurationFile*
 More of an aesthetic reason than anything else. We're already have a lot of
 code and log4j meta configuration going on, and the more ways we can
 simplify that the better. Why depend on two ways of configuring log4j when
 we might get away with just one?

 Overall, our programmatic configuration approach has felt pretty far off
 the typical configuration path, and tends to break in frequent and subtle
 ways. Is it atypical to want DRY logging configurations? How do other
 people approach this?


 On Wed, Jun 4, 2014 at 10:32 PM, Matt Sicker boa...@gmail.com wrote:

  It's supposed to help clean up any resources and commit anything
 necessary.
  It sounds like you're having the opposite effect, though. Any details
 about
  environment or plugins that might help?
 
 
  On 4 June 2014 16:59, James Bellenger ja...@kixeye.com wrote:
 
   (sorry for the fat-fingered send earlier)
  
   Hello.
   Our environment depends on these things:
  
  - programmatic log4j configuration
  - having shutdownHook disabled
  - ideally: not having to depend on the log4j.configurationFile
  environment var
  
   I've had a hard time balancing all three of them.
   Generally, the first access on the rootLogger context installs a
 default
   configuration that always enables the shutdownHook, and there's not a
  clear
   means to disable it without falling back to the log4j.configurationFile
   property.  Some of the methods available for reconfiguration (onChange,
   setConfiguration), don't reset the shutdown hook.
  
   As a new user to the group, and out of curiosity, why does shutdownHook
   exist in the first place? It causes us to lose logs when the system is
   shutting down -- why is this on by default?
  
  
   On Wed, Jun 4, 2014 at 2:54 PM, James Bellenger ja...@kixeye.com
  wrote:
  
Hello.
Our environment depends on two things:
   
   - programmatic log4j configuration
   - having shutdownHook disabled
   - ideally: not having to depend on the log4j.configurationFile
   environment var
   
 programmatic configuration of log4j2.
In trying to remove any dependencies on the log4j.configurationFile
 env
variable, I've found that there's not a good way to ensure that there
  is
   
  
 
 
 
  --
  Matt Sicker boa...@gmail.com
 




-- 
Matt Sicker boa...@gmail.com


Re: shutdownHook and programmatic configuration

2014-06-05 Thread Ralph Goers
If you create a file named log4j2.component.properties and place it in the 
class path you can specify any of the log4j system properties to tailor the 
desired behavior. The log4j-web module does this to disable the shutdown hook 
when running in a web container.

Ralph


On Jun 5, 2014, at 11:42 AM, Matt Sicker boa...@gmail.com wrote:

 That doesn't sound too far off from what I'd expect is the case (or desired
 case) in a lot of environments. You can use property placeholders in a lot
 of places to be later configured through various means, and you can even
 specify the configuration via JNDI.
 
 In regards to the shutdown hook, perhaps it would be better to offer a
 public API to shutdown instead? That way each use case can hook it into the
 proper location.
 
 
 On 5 June 2014 01:17, James Bellenger ja...@kixeye.com wrote:
 
 Hi Matt.
 Our environment is a custom scala application server. Our use case is the
 same as most standalone java apps -- we just want to log stuff and have it
 go somewhere. We're extremely vanilla in what we need from log4j -- it's
 really just different combinations of console, rollingfile, and flume
 appenders.
 
 Rationale for some of our requirements, are in priority order:
 
 *having shutdownHook disabled*
 Our server registers its own jvm shutdown hook to know when to start
 shutting itself down. Shutdown isn't always straight forward, so we need
 log4j to keep running to capture logs.
 
 *programmatic log4j configuration*
 This is more of a proxy requirement -- the real need is to be able to
 support both local and deployed environments without having repetition in
 our logging configuration. We do this by having one file define global
 things like log levels for different packages, and then multiple config
 files for each supported appender. At runtime, we configure the root logger
 with the global configuration, and then load config files for each appender
 we need and attach it to the root logger.
 
 *not depending on log4j.configurationFile*
 More of an aesthetic reason than anything else. We're already have a lot of
 code and log4j meta configuration going on, and the more ways we can
 simplify that the better. Why depend on two ways of configuring log4j when
 we might get away with just one?
 
 Overall, our programmatic configuration approach has felt pretty far off
 the typical configuration path, and tends to break in frequent and subtle
 ways. Is it atypical to want DRY logging configurations? How do other
 people approach this?
 
 
 On Wed, Jun 4, 2014 at 10:32 PM, Matt Sicker boa...@gmail.com wrote:
 
 It's supposed to help clean up any resources and commit anything
 necessary.
 It sounds like you're having the opposite effect, though. Any details
 about
 environment or plugins that might help?
 
 
 On 4 June 2014 16:59, James Bellenger ja...@kixeye.com wrote:
 
 (sorry for the fat-fingered send earlier)
 
 Hello.
 Our environment depends on these things:
 
   - programmatic log4j configuration
   - having shutdownHook disabled
   - ideally: not having to depend on the log4j.configurationFile
   environment var
 
 I've had a hard time balancing all three of them.
 Generally, the first access on the rootLogger context installs a
 default
 configuration that always enables the shutdownHook, and there's not a
 clear
 means to disable it without falling back to the log4j.configurationFile
 property.  Some of the methods available for reconfiguration (onChange,
 setConfiguration), don't reset the shutdown hook.
 
 As a new user to the group, and out of curiosity, why does shutdownHook
 exist in the first place? It causes us to lose logs when the system is
 shutting down -- why is this on by default?
 
 
 On Wed, Jun 4, 2014 at 2:54 PM, James Bellenger ja...@kixeye.com
 wrote:
 
 Hello.
 Our environment depends on two things:
 
   - programmatic log4j configuration
   - having shutdownHook disabled
   - ideally: not having to depend on the log4j.configurationFile
   environment var
 
 programmatic configuration of log4j2.
 In trying to remove any dependencies on the log4j.configurationFile
 env
 variable, I've found that there's not a good way to ensure that there
 is
 
 
 
 
 
 --
 Matt Sicker boa...@gmail.com
 
 
 
 
 
 -- 
 Matt Sicker boa...@gmail.com


-
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org



Re: shutdownHook and programmatic configuration

2014-06-04 Thread James Bellenger
(sorry for the fat-fingered send earlier)

Hello.
Our environment depends on these things:

   - programmatic log4j configuration
   - having shutdownHook disabled
   - ideally: not having to depend on the log4j.configurationFile
   environment var

I've had a hard time balancing all three of them.
Generally, the first access on the rootLogger context installs a default
configuration that always enables the shutdownHook, and there's not a clear
means to disable it without falling back to the log4j.configurationFile
property.  Some of the methods available for reconfiguration (onChange,
setConfiguration), don't reset the shutdown hook.

As a new user to the group, and out of curiosity, why does shutdownHook
exist in the first place? It causes us to lose logs when the system is
shutting down -- why is this on by default?


On Wed, Jun 4, 2014 at 2:54 PM, James Bellenger ja...@kixeye.com wrote:

 Hello.
 Our environment depends on two things:

- programmatic log4j configuration
- having shutdownHook disabled
- ideally: not having to depend on the log4j.configurationFile
environment var

  programmatic configuration of log4j2.
 In trying to remove any dependencies on the log4j.configurationFile env
 variable, I've found that there's not a good way to ensure that there is



Re: shutdownHook and programmatic configuration

2014-06-04 Thread Matt Sicker
It's supposed to help clean up any resources and commit anything necessary.
It sounds like you're having the opposite effect, though. Any details about
environment or plugins that might help?


On 4 June 2014 16:59, James Bellenger ja...@kixeye.com wrote:

 (sorry for the fat-fingered send earlier)

 Hello.
 Our environment depends on these things:

- programmatic log4j configuration
- having shutdownHook disabled
- ideally: not having to depend on the log4j.configurationFile
environment var

 I've had a hard time balancing all three of them.
 Generally, the first access on the rootLogger context installs a default
 configuration that always enables the shutdownHook, and there's not a clear
 means to disable it without falling back to the log4j.configurationFile
 property.  Some of the methods available for reconfiguration (onChange,
 setConfiguration), don't reset the shutdown hook.

 As a new user to the group, and out of curiosity, why does shutdownHook
 exist in the first place? It causes us to lose logs when the system is
 shutting down -- why is this on by default?


 On Wed, Jun 4, 2014 at 2:54 PM, James Bellenger ja...@kixeye.com wrote:

  Hello.
  Our environment depends on two things:
 
 - programmatic log4j configuration
 - having shutdownHook disabled
 - ideally: not having to depend on the log4j.configurationFile
 environment var
 
   programmatic configuration of log4j2.
  In trying to remove any dependencies on the log4j.configurationFile env
  variable, I've found that there's not a good way to ensure that there is
 




-- 
Matt Sicker boa...@gmail.com