From: Marc Z. <mar...@gm...> - 2013-03-16 18:19:34
|
The use case is the situation where I don't know what the config file with the logging configuration is yet. So basically, the program does the following: 1. Initializes the logging system as soon as it starts, before anything else, with a basic config that will log to stdout. 2. Process the command line parameters, does some other configuration work, which includes figuring out where the correct logging configuration file is. I need a valid logging system because there may be cases in this phase that log messages get generated, say for missing information or a filesystem permission issue, etc. 3. Calls init() with the new config file, to setup the real logging that should be done for the rest of the application. I cannot use the init_and_watch() method, because I don't have a config file to use yet. Not to mention, the init_and_watch has some performance issues. So basically the question I have is that I need to reset and re-configure the logging system at some point after the initial logging setup. The docs for the init() and init_once() methods suggest that calling init() a second time will "reset" and "overwrite" the current configuration, which in this case I want. I hope that helps. On Sat, Mar 16, 2013 at 4:08 AM, Lee <le...@gm...> wrote: > I don't know the L4p source, but I vaguely recall that someone, years ago, > possibly in the Log4perl docs, said that the init method was only intended > to implement initialisation, not re-initialisation. > > I may be wrong — I can't imagine ever calling init() twice, though I did > occasionally do it when I first started using the system, there was some > now-forgotten issue that stopped the practice. > > Why are you calling init twice? > > If it is just in case the config has chanced, there is an init-and-watch > method. > > If it is to combine configurations, the Hash::Merge module can help, and > there is a working example somewhere in the archives of this group. > > HTH > > > On 15/03/2013 21:54, Marc Zampetti wrote: > >> I have a program that configures a basic Log4perl config so that I have >> some sane logging until I'm able to read in the config file with the >> final configuration. I'm getting an error when calling >> Log::Log4perl->init() the second time that I cannot seem to track down. >> >> From the reading of the docs, this is a valid use case. Its a pretty >> basic perl script, not using fork() or threads or anything, and running >> from the commandline, not mod_perl or something like that. >> >> The error I get is: >> >> Can't call method "log" on an undefined value at >> /usr/lib/perl5/vendor_perl/5.**8.8/Log/Log4perl/Appender.pm line 189. >> >> This is generated when I do the second Log::Log4perl->init(filename) >> call. The first call to init passes in a string with the basic >> configuration. >> >> Anyone have any ideas what the issue might be? >> >> I'm running Log4perl-1.40, using Red Hat 5 64-bit. >> >> ------------------------------**------------------------------** >> ------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_**d2d_mar <http://p.sf.net/sfu/appdyn_d2d_mar> >> ______________________________**_________________ >> log4perl-devel mailing list >> log4perl-devel@lists.**sourceforge.net<log...@li...> >> https://lists.sourceforge.net/**lists/listinfo/log4perl-devel<https://lists.sourceforge.net/lists/listinfo/log4perl-devel> >> >> > |