---
title: "tidylog Integration"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{tidylog Integration}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```
The **[tidylog](https://CRAN.R-project.org/package=tidylog)**
package supports console messaging for most **dplyr** and **tidyr** functions.
This package integrates nicely with **logr** to provide automatic logging
for common data manipulation tasks.

#### Autolog Integration

For **logr** version 1.2.0 and later, **tidylog** integration has been 
incorporated into the **autolog** feature.  To engage autolog, simply
turn it on when you call `log_open`, or set the autolog global option, as 
follows:

    globals("logr.autolog" = TRUE)

The autolog feature also allows other packages to
automatically write to the **logr** log.  Overall, autolog makes your
code cleaner and the logging more automatic.  It is recommended to use autolog 
if the situation allows it.

#### Autolog Example
    
Here is a small example showing the autolog feature:

```{r eval=FALSE, echo=TRUE}
library(logr)
library(dplyr)
library(magrittr)

# Create temp file location
tmp <- file.path(tempdir(), "test.log")

# Open log
lf <- log_open(tmp, autolog = TRUE, show_notes = FALSE)

# Print log header
sep("Example of autolog feature")

# Send message to log
put("High Mileage Cars Subset")

# Perform dplyr operations
hmc <- mtcars %>% 
  select(mpg, cyl, disp) %>% 
  filter(mpg > 20) %>% 
  arrange(mpg) %>% 
  put() # sends pipeline result to log

# Close log
log_close()

# View results
writeLines(readLines(lf))

```

#### Autolog Log

Here is the log from the above example:

```
========================================================================= 
Log Path: C:/Users/User/AppData/Local/Temp/RtmpYDx4m4/log/test.log 
Working Directory: C:/packages/logr 
User Name: User 
R Version: 4.0.3 (2020-10-10) 
Machine: DESKTOP-1F27OR8 x86-64 
Operating System: Windows 10 x64 build 18363 
Base Packages: stats graphics grDevices utils datasets methods base
Other Packages: logr_1.2.7 dplyr_1.0.7 
Log Start Time: 2021-01-02 12:45:06 
========================================================================= 

========================================================================= 
Example of autolog feature
========================================================================= 

High Mileage Cars Subset 

select: dropped 8 variables (hp, drat, wt, qsec, vs, …)

filter: removed 18 rows (56%), 14 rows remaining

                mpg cyl  disp
Mazda RX4      21.0   6 160.0
Mazda RX4 Wag  21.0   6 160.0
Hornet 4 Drive 21.4   6 258.0
Volvo 142E     21.4   4 121.0
Toyota Corona  21.5   4 120.1
Datsun 710     22.8   4 108.0
Merc 230       22.8   4 140.8
Merc 240D      24.4   4 146.7
Porsche 914-2  26.0   4 120.3
Fiat X1-9      27.3   4  79.0
Honda Civic    30.4   4  75.7
Lotus Europa   30.4   4  95.1
Fiat 128       32.4   4  78.7
Toyota Corolla 33.9   4  71.1

========================================================================= 
Log End Time: 2021-01-02 12:45:10 
Log Elapsed Time: 0 00:00:03 
========================================================================= 

```

#### Manual Integration

If you do not want to use autolog, or are using a version of **logr** prior
to v1.2.0, you can still integrate with **tidylog** using a manual integration
method. 

To integrate **logr** with **tidylog** manually, first install
and load the **tidylog** package.  To reduce the number of warning messages,
add the `warn.conflicts` parameter to the `library` function, as follows:

    library("tidylog", warn.conflicts = FALSE)

Then assign the **tidylog** `display` setting to `log_print`, like this:

    options("tidylog.display" = list(log_print))

This setting will cause all **tidylog** messages to be written to the **logr**
log.  You will not need to call `log_print` or `put` for **tidylog** 
messages.  Note that you still must open and close the **logr** log, 
as per normal operation.  

To detach **logr** from **tidylog**, set the display option to `NULL`:

    options("tidylog.display" = NULL)
    
#### Manual Integration Example
    
Here is a small example showing **logr** and **tidylog** integration:

```{r eval=FALSE, echo=TRUE}
library(logr)
library(dplyr)
library(magrittr)
library(tidylog, warn.conflicts = FALSE)

# Connect tidylog to logr
options("tidylog.display" = list(log_print),
        "logr.notes" = FALSE)
 
# Create temp file location
tmp <- file.path(tempdir(), "test.log")

# Open log
lf <- log_open(tmp)

# Print log header
sep("Example of tidylog integration")

# Send message to log
put("High Mileage Cars Subset")

# Perform dplyr operations
hmc <- mtcars %>% 
  select(mpg, cyl, disp) %>% 
  filter(mpg > 20) %>% 
  arrange(mpg) %>% 
  put() # sends pipeline result to log

# Close log
log_close()

# View results
writeLines(readLines(lf))

```

#### Log

Here is the log from the above example:

```
========================================================================= 
Log Path: C:/Users/User/AppData/Local/Temp/RtmpioAPbg/log/test.log 
Working Directory: C:/packages/Testing 
User Name: User 
R Version: 4.0.3 (2020-10-10) 
Machine: DESKTOP-1F27OR8 x86-64 
Operating System: Windows 10 x64 build 18363 
Log Start Time: 2020-12-21 13:29:03 
========================================================================= 

========================================================================= 
Example of tidylog integration 
========================================================================= 

High Mileage Cars Subset 

select: dropped 8 variables (hp, drat, wt, qsec, vs, …)

filter: removed 18 rows (56%), 14 rows remaining

                mpg cyl  disp
Mazda RX4      21.0   6 160.0
Mazda RX4 Wag  21.0   6 160.0
Hornet 4 Drive 21.4   6 258.0
Volvo 142E     21.4   4 121.0
Toyota Corona  21.5   4 120.1
Datsun 710     22.8   4 108.0
Merc 230       22.8   4 140.8
Merc 240D      24.4   4 146.7
Porsche 914-2  26.0   4 120.3
Fiat X1-9      27.3   4  79.0
Honda Civic    30.4   4  75.7
Lotus Europa   30.4   4  95.1
Fiat 128       32.4   4  78.7
Toyota Corolla 33.9   4  71.1

========================================================================= 
Log End Time: 2020-12-21 13:29:03 
Log Elapsed Time: 0 00:00:00 
========================================================================= 

```

Next: [Package Integration](logr-integration.html)


