[log4perl-devel] Error when re-initializing log4perl
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 ___ log4perl-devel mailing list log4perl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/log4perl-devel
Re: [log4perl-devel] Error when re-initializing log4perl
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 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 >> https://lists.sourceforge.net/**lists/listinfo/log4perl-devel<https://lists.sourceforge.net/lists/listinfo/log4perl-devel> >> >> > -- 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___ log4perl-devel mailing list log4perl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/log4perl-devel
Re: [log4perl-devel] Error when re-initializing log4perl
No, adding Log::Log4perl->reset() before the second call to Log::log4perl->init() doesn't fix anything. So far, the only solution is to remove one of the calls to Log::Log4perl->init(). Marc On Sun, Mar 17, 2013 at 8:32 PM, Mike Schilli wrote: > On Sat, 16 Mar 2013, Marc Zampetti wrote: > > 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. >> > > Can you try if calling > > Log::Log4perl->reset() > > before calling init() the second time fixes the problem? > > -- -- Mike > > Mike Schilli > m...@perlmeister.com > > In the test suite, >> I hope that helps. >> >> On Sat, Mar 16, 2013 at 4:08 AM, Lee 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 >> https://lists.sourceforge.net/**lists/listinfo/log4perl-devel<https://lists.sourceforge.net/lists/listinfo/log4perl-devel> >> >> >> >> >> -- 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___ log4perl-devel mailing list log4perl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/log4perl-devel