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

Gergely Daróczi daroczig at rapporter.net
Tue Oct 7 18:05:03 CEST 2014


On Tue, Oct 7, 2014 at 4:51 PM, Duncan Murdoch <murdoch.duncan at gmail.com>
wrote:

> On 07/10/2014 10:41 AM, DataK - B. THIEURMEL wrote:
>
>> OK, thank you for your answers. We are thus going to continue by
>> analyzing these features
>>
>
> The general outline would be this:
>
> 1.  Call parse() on the whole file.  This will catch any syntax errors.
> If it parses okay, you'll get a vector of expressions to evaluate.
>
> 2.  Evaluate each expression in sequence within withCallingHandlers().
> You need to decide what to do if you get an error(); source() would quit
> the script at that point, so that's probably a good idea.


Quick demo with "pander::evals":
https://gist.github.com/daroczig/480af8ad766e96dd25f4


>
>
> Duncan Murdoch
>
>
>> Le 2014-10-07 16:29, Duncan Murdoch a écrit :
>> > On 07/10/2014 10:16 AM, DataK - B. THIEURMEL 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 ?
>> >
>> > No, I don't think so.  withCallingHandlers is all you need for your
>> > purpose.
>> >
>> > Duncan Murdoch
>> >
>> >>
>> >> 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
>> >>
>>
>>
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list