From: Marc Z. <mar...@gm...> - 2013-03-15 20:54:33
|
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. |
From: Lee <le...@gm...> - 2013-03-16 08:09:06
|
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 > _______________________________________________ > log4perl-devel mailing list > log...@li... > https://lists.sourceforge.net/lists/listinfo/log4perl-devel > |
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> >> >> > |
From: Mike S. <m...@pe...> - 2013-03-18 00:43:13
|
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...@pe... > In the test suite, > > 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 > _______________________________________________ > log4perl-devel mailing list > log...@li... > https://lists.sourceforge.net/lists/listinfo/log4perl-devel > > > > > |
From: Marc Z. <mar...@gm...> - 2013-03-18 16:24:57
|
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 <m...@pe...> 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...@pe... > > In the test suite, >> 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> >> >> >> >> >> |
From: Mike S. <m...@pe...> - 2013-03-19 00:02:37
|
On Mon, 18 Mar 2013, Marc Zampetti wrote: > 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(). Do you have some code that reproduces the problem so I can take a look? -- -- Mike Mike Schilli m...@pe... > > Marc > > On Sun, Mar 17, 2013 at 8:32 PM, Mike Schilli <m...@pe...> 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...@pe... > > In the test suite, > 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 > _______________________________________________ > log4perl-devel mailing list > log...@li... > https://lists.sourceforge.net/lists/listinfo/log4perl-devel > > > > > > > |