diff --git a/advertools/logs.py b/advertools/logs.py index 28757776..8e63ce3c 100644 --- a/advertools/logs.py +++ b/advertools/logs.py @@ -544,7 +544,11 @@ def logs_to_df( raise ValueError( "Please provide an `output_file` with a `.parquet` " "extension." ) - + if not LOG_DATE_FORMATS.get(log_format) and fields is None: + raise ValueError( + "Please supply a value for the `fields` parameter when you provide a custom" + "log format." + ) regex = LOG_FORMATS.get(log_format) or log_format date_fmt = date_format or LOG_DATE_FORMATS.get(log_format) columns = fields or LOG_FIELDS[log_format] diff --git a/tests/test_logs.py b/tests/test_logs.py index a2f8130f..e4f5124f 100644 --- a/tests/test_logs.py +++ b/tests/test_logs.py @@ -146,4 +146,16 @@ def test_logstodf_parses_raises_wrong_date_fmt(): date_format="%B %, M:%S %z", ) result = pd.read_parquet(path / "delete_output.parquet") - assert not ("datetime" in result["datetime"].dtype.name) + assert "datetime" not in result["datetime"].dtype.name + + +def test_logstodf_raises_on_no_fields(): + """Raise an exception if user proivides custom log format without fields.""" + with pytest.raises(ValueError): + logs_to_df( + log_file="some_file.txt", + output_file="output_file.parquet", + errors_file="errors.txt", + log_format="custom_regex", + fields=None, + )