From wdunlap at tibco.com  Tue Oct  7 18:34:24 2014
From: wdunlap at tibco.com (William Dunlap)
Date: Tue, 7 Oct 2014 09:34:24 -0700
Subject: [Rd] [R logs] Help in develop a simply logs package
In-Reply-To: <50055615b4a67b88787ba18dc0c607b8@datak.fr>
References: <4726f6636a227512e8a3ec4ae1562e73@datak.fr>
	<5433DAD0.8080305@gmail.com>
	<CAPvvxJV=P4Hj3hL+cic2XN1CRtH5BrQROZHb8AHWY501Pq5FBw@mail.gmail.com>
	<50055615b4a67b88787ba18dc0c607b8@datak.fr>
Message-ID: <CAF8bMcap0CE9AMOpLZWjvO8sV=YmUu83qcL7mDfEjqZBnhhNmg@mail.gmail.com>

R has support for options(warning.expression=...), but it acts
differently than the options(error=...).

S (and S+) let the user override the default '.Program' expression.
Its default value was essentially
   print(.Last.value <- eval(parse(file=stdin())))
but a replacement could add stuff like print the time it took to do
the evaluation, put errors and warnings
into a log file, or even read input expressions from an alternate source.

R has some hook functions that let you do some of that, but I don't
know how much they let you do.



Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Tue, Oct 7, 2014 at 7:16 AM, DataK - B. THIEURMEL <bt at datak.fr> wrote:
> Thank. withCallingHandlers() and "pander::evals" seem to be very
> interesting, but little adapted to the analysis of one or several scripts R
> / of many lines of code. Our goal is one packages requiring no modifications
> of code R to be able to get back all the desired information.
>
> Is-there a hope in seeing R core team adding two options warn and message
> with the same features as options(error) ? Or if we try (and succeed) to
> code a patch for it, to see it integrating in R ?
>
> I think that it would be very useful.
>
> Benoit
>
> Le 2014-10-07 14:38, Gergely Dar?czi a ?crit :
>>
>> On Tue, Oct 7, 2014 at 2:21 PM, Duncan Murdoch
>> <murdoch.duncan at gmail.com> wrote:
>>
>>> On 07/10/2014, 7:04 AM, DataK - B. THIEURMEL wrote:
>>>>
>>>> Hi,
>>>>
>>>> With the use of R in production, it is necessary to have a system
>>>
>>> of
>>>>
>>>> logs effective, and light.
>>>>
>>>> Package exist as to futile.logger, but it require the additional
>>>
>>> coding
>>>>
>>>> of logs. So it is thus impossible / very difficult to use it with
>>>
>>> all
>>>>
>>>> package them used in the calculation
>>>>
>>>> Our idea is to develop one packages global, simple, who would
>>>
>>> allow to
>>>>
>>>> identify all the errors, warning, message generated by the
>>>
>>> functions
>>>>
>>>> stop(), warning() and message() stop as well as by signals and
>>>> internally code, with log levels configurable later by package,
>>>> functions...
>>>>
>>>> One way is to overwrite temporarily the functions stop(),
>>>
>>> warning() and
>>>>
>>>> message() of base package, but I think is not a good thing, and
>>>> furthermore, we lose all signals and internally "message"...
>>>>
>>>> A good use of options(error) seems to do the perfect job, but
>>>
>>> only for
>>>>
>>>> error...
>>>>
>>>> Our problem / question :
>>>> - At present, how it is possible to have the same features for
>>>
>>> messages
>>>>
>>>> and warnings? (like options(errors)) (I don't find...)
>>>> - Would new options be possible in a near future R ?
>>>> - Have there better / other possibilities to handle all the
>>>
>>> warnings,
>>>>
>>>> message of the way which we wish?
>>>>
>>>
>>> withCallingHandlers() lets you evaluate expressions with code
>>> to catch
>>> messages, warnings and errors.
>>
>>
>> That's exactly what I'm using in "pander::evals" to capture all
>> error/warning/normal messages while evaluating an R command, and to
>> also capture the results (as R objects), stdout and the printed
>> version of the object -- which might be useful in a custom
>> environment. E.g. I use this function to evaluate all R chunks in
>> markdown document and also to store all R messages run at the
>> rapporter.net [2] API. Please let me know if anyone is interested, and
>> I will start cleaning up the related codebase and publish on GH --
>> although "pander" and "evals" is already
>> there: https://github.com/Rapporter/pander [3]
>>
>> Quick demo: http://pastebin.com/jCUkgKim [4]
>>
>>
>>> I don't know if there's a way to evaluate every expression entered
>>> at
>>> the console within withCallingHandlers() for an effect like
>>> options(error=), but you can certainly write code to read a file
>>> and
>>> evaluate every expression in it within a withCallingHandlers()
>>> call.
>>>
>>> Duncan Murdoch
>>>
>>>> Hope is clear. Open to any suggestions.
>>>>
>>>> Thank you in advance
>>>>
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel [1]
>>
>>
>>
>>
>> Links:
>> ------
>> [1] https://stat.ethz.ch/mailman/listinfo/r-devel
>> [2] http://rapporter.net
>> [3] https://github.com/Rapporter/pander
>> [4] http://pastebin.com/jCUkgKim
>
>
> --
> Benoit Thieurmel
> +33 6 69 04 06 11
>
> DataKnowledge
> 46 rue Amsterdam - 75009 Paris
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] [R logs] Help in develop a simply logs package
William Dunlap