On 14 March 2016 at 15:27, Sam Ruby <[email protected]> wrote:
> On Mon, Mar 14, 2016 at 11:09 AM, sebb <[email protected]> wrote:
>> On 14 March 2016 at 14:22, Sam Ruby <[email protected]> wrote:
>>> On Mon, Mar 14, 2016 at 10:10 AM, sebb <[email protected]> wrote:
>>>> On 14 March 2016 at 12:55, sebb <[email protected]> wrote:
>>>>> It would be useful to be able to initialise the default log level but
>>>>> still allow CLI over-ride.
>>>>>
>>>>> I've found a hacky fix:
>>>>>
>>>>> Wunderbar.log_level = 'info' unless Wunderbar.log_level == 'debug' #
>>>>> don't override command-line level
>>>>>
>>>>> however that relies on knowing that debug (and only debug) is more
>>>>> verbose than info.
>>>>
>>>> I can improve that with:
>>>>
>>>> Wunderbar.log_level = 'info' unless Wunderbar.logger.info?
>>>>
>>>> however this still overrides a CLI arg of --warn etc.
>>>>
>>>> I tried another hack:
>>>>
>>>> ARGV.unshift '--info'
>>>>
>>>> at the start of the script, but that does not work properly because
>>>> Wunderbar does not process ARGV in order.
>>>> But even if it did, updating the args would be a hack.
>>>>
>>>> So I think there needs to be a way to override the default level.
>>>
>>> I just pushed out a change to wunderbar that adds that:
>>>
>>> https://github.com/rubys/wunderbar/commit/3e9472f811b616c190bc94d23606c4864ee104cc
>>
>> Thanks; that works provided the default is set before any logging takes 
>> place.
>> Also it can only be invoked once; subsequent invocations are silently 
>> ignored.
>
> I thought that was sufficient to meet your needs?  Or at least I did,
> until you mentioned stderr.

There's also the formatter.

It seems to me that the user should be able to override all the
built-in defaults:
- output
- level
- format

Although they have sensible defaults, it's currently awkward to change them.

>>>> It would also be useful to be able to override the default output
>>>> stream; $stderr is not always suitable.
>>>
>>> If you need more interfaces, they can be added to wunderbar.
>>
>> I'm not sure that's an option for the output stream.
>> The default_log_level method instantiates the logger; it's then too
>> late to change the stream as there is no public API in Logger to do
>> so.
>> It would require creating a new Logger and copying across the existing
>> config. Messy.
>>
>> Also it's not as efficient as providing them in Wunderbar itself.
>> I don't think the enhancements are particularly esoteric.
>
> Agreed.  Issues and/or patches welcome.  Testing changes to wunderbar
> is simply a matter of cloning the repository and setting RUBYLIB or
> updating the Gemfile.

OK, thanks.

>>>  Also,
>>> you can create your own logger:
>>>
>>> http://ruby-doc.org/stdlib-2.3.0/libdoc/logger/rdoc/Logger.html
>>>
>>> You can even make wunderbar use that logger:
>>>
>>>   Wunderbar.logger = your_custom_logger
>>
>> Yes, but that needs code that basically repeats the existing
>> constructor; seems wasteful.
>
> At times I've thought that the right layering was that whimsy/asf
> would have its own logger, and would provide it to Wunderbar to deal
> with applications that use that library.  I felt this way as it always
> felt strange that applications that don't otherwise use the wunderbar
> library make calls to it to set up logging.

I see.

> I never fully explored what it would take to do that.

Maybe the logger part of Wunderbar could be moved into a separate Gem?

It could then be used by Whimsy or Wunderbar.

> In any case, I'm quite open to updating wunderbar

Thanks.

>>>>> Also modifying the formatter message is a bit messy; it would be
>>>>> useful if this could be specified when creating the logger.
>>>>>
>>>>> I don't know how to do this in Ruby - if it's even possible?
>>>
>>> - Sam Ruby
>
> - Sam Ruby

Reply via email to