Logging in eider
eider
uses the logger
package to log messages. Most messages in eider
are logged at either the DEBUG
level (when eider
is e.g. parsing information from JSON), or at the TRACE
level (most functions in eider
log a TRACE
message containing the execution context).
When running a pipeline, you can set the logging level with either:
logger::log_threshold(logger::DEBUG)
which causes the DEBUG
messages to be displayed, or:
logger::log_threshold(logger::TRACE)
which causes both the TRACE
and DEBUG
messages to be displayed.
Errors with context
Additionally, the execution context (which is usually restricted to TRACE
messages) is also displayed when eider
runs into an error. If you run into an error that does not provide enough information, please consider submitting an issue.
Here are a few examples:
Wrong transformation type
{
"source_table": "ae2",
"transformation_type": "COUNT DRACULA",
"grouping_column": "id",
"output_feature_name": "something"
}
In the JSON above (json_examples/logging1.json
), an invalid transformation_type
is specified. Notice how the resulting error tells you which JSON file the error occurs in.
run_pipeline(
data_sources = list(ae2 = eider_example("random_ae_data.csv")),
feature_filenames = "json_examples/logging1.json"
)
#> Error: Unknown transformation type: count dracula
#> Context:
#> > featurise: json_examples/logging1.json
Wrong column name
{
"source_table": "ae2",
"transformation_type": "COUNT",
"grouping_column": "this_column_doesnt_exist",
"output_feature_name": "something"
}
Here (json_examples/logging2.json
), a grouping_column
is specified, but such a column does not exist in the input table.
run_pipeline(
data_sources = list(ae2 = eider_example("random_ae_data.csv")),
feature_filenames = "json_examples/logging2.json"
)
#> Error: The column 'this_column_doesnt_exist' supplied for 'grouping_column' was not found in the input table.
#> Context:
#> > featurise: json_examples/logging2.json
#> > featurise_count
Data type mismatch
{
"source_table": "ae2",
"transformation_type": "COUNT",
"grouping_column": "id",
"output_feature_name": "something",
"filter": {
"column": "diagnosis_1",
"type": "in",
"value": "a string"
}
}
This example (json_examples/logging3.json
) specifies that the table should be filtered to only retain rows where diagnosis_1
is equal to "a string"
, but in the actual table, diagnosis_1
is an integer.
run_pipeline(
data_sources = list(ae2 = eider_example("random_ae_data.csv")),
feature_filenames = "json_examples/logging3.json"
)
#> Error: The 'value' field of a filter object must be of the same type as the column to be filtered on. However, the column 'diagnosis_1' is of type 'integer', while the value given is of type 'character'.
#> Context:
#> > featurise: json_examples/logging3.json
#> > featurise_count
#> > filter_basic