Apologies, this is actually for ticket #4114. I've amended the commit message.
On Jul 6, 2010, at 1:36 PM, Nick Lewis wrote: > The log will now queue any log messages created when there is no > destination, and will flush the queue when a destination is added. > > Signed-off-by: Nick Lewis <[email protected]> > --- > lib/puppet/util/log.rb | 17 +++++++++++++++++ > spec/unit/util/log_spec.rb | 6 ++++++ > spec/unit/util/logging_spec.rb | 6 ++++++ > 3 files changed, 29 insertions(+), 0 deletions(-) > > diff --git a/lib/puppet/util/log.rb b/lib/puppet/util/log.rb > index ba23e12..64a8d14 100644 > --- a/lib/puppet/util/log.rb > +++ b/lib/puppet/util/log.rb > @@ -31,6 +31,8 @@ class Puppet::Util::Log > > @destinations = {} > > + @queued = [] > + > class << self > include Puppet::Util > include Puppet::Util::ClassGen > @@ -145,6 +147,7 @@ class Puppet::Util::Log > else > @destinations[dest] = type.new() > end > + flushqueue > rescue => detail > if Puppet[:debug] > puts detail.backtrace > @@ -167,6 +170,8 @@ class Puppet::Util::Log > return > end > > + queuemessage(msg) if @destinations.count == 0 > + > @destinations.each do |name, dest| > threadlock(dest) do > dest.handle(msg) > @@ -174,6 +179,18 @@ class Puppet::Util::Log > end > end > > + def Log.queuemessage(msg) > + @queued.push(msg) > + end > + > + def Log.flushqueue > + return unless @destinations.size >= 1 > + @queued.each do |msg| > + Log.newmessage(msg) > + end > + @queued.clear > + end > + > def Log.sendlevel?(level) > @levels.index(level) >= @loglevel > end > diff --git a/spec/unit/util/log_spec.rb b/spec/unit/util/log_spec.rb > index 7aaa580..c72078f 100755 > --- a/spec/unit/util/log_spec.rb > +++ b/spec/unit/util/log_spec.rb > @@ -84,6 +84,12 @@ describe Puppet::Util::Log do > Puppet::Util::Log.new(:level => :notice, :message => > :foo).message.should == "foo" > end > > + it "should write queued logs when the first destination is > specified" do > + Hash.any_instance.stubs(:[]=) > + Puppet::Util::Log.expects(:flushqueue) > + Puppet::Util::Log.newdestination(:console) > + end > + > it "should convert the level to a symbol if it's passed in as a > string" do > Puppet::Util::Log.new(:level => "notice", :message => > :foo).level.should == :notice > end > diff --git a/spec/unit/util/logging_spec.rb b/spec/unit/util/logging_spec.rb > index aee308e..41b07d4 100755 > --- a/spec/unit/util/logging_spec.rb > +++ b/spec/unit/util/logging_spec.rb > @@ -40,6 +40,12 @@ describe Puppet::Util::Logging do > @logger.notice "foo" > end > > + it "should queue logs sent without a specified destination" do > + Puppet::Util::Log.expects(:queuemessage) > + > + @logger.notice "foo" > + end > + > it "should use the path of any provided resource type" do > resource = Puppet::Type.type(:mount).new :name => "foo" > > -- > 1.7.1 > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
