rgrizzell opened a new issue #10024:
URL: https://github.com/apache/airflow/issues/10024


   **Apache Airflow version**: 1.10.11
   
   
   **Kubernetes version (if you are using kubernetes)** (use `kubectl 
version`): N/A
   
   **Environment**: 
   
   - **Cloud provider or hardware configuration**: QEMU
   - **OS** (e.g. from /etc/os-release): Ubuntu 20.04 (and Fedora 32)
   - **Kernel** (e.g. `uname -a`): 5.4.0-42-generic (and 5.6.6-300.fc32.x86_64)
   - **Install tools**: Virtualenv
   - **Others**: Python 2.7.18 (and Python 3.8.3)
   
   **What happened**:
   
   If Airflow is set to log in Plaintext, it will print the log messages with 
`asctime` properly set.
   ```[2020-07-22 15:13:13,783] {standard_task_runner.py:54} INFO - Started 
process 116982 to run task```
   
   With the configuration changes to print to JSON, `asctime` is set to `null`.
   ```{"asctime": null, "task_id": "runme_0", "execution_date": 
"2020_07_23T00_00_00_000000", "filename": "standard_task_runner.py", "lineno": 
54, "message": "Started process 281332 to run task", "try_number": "1", 
"levelname": "INFO", "dag_id": "example_bash_operator"}```
   
   **What you expected to happen**:
   
   The `asctime` field should be properly set when the log message is printed 
in JSON.
   
   **How to reproduce it**:
   
   Using any standard default Airflow installation with the Elasticsearch 
subpackage installed, follow the instructions for [Writing Logs to 
Elasticsearch](https://airflow.readthedocs.io/en/stable/howto/write-logs.html#writing-logs-to-elasticsearch).
 _A running Elasticsearch instance is not required to reproduce this bug._
   
   <details><summary>Diff of changes to `airflow.cfg`</summary>
   
        -- airflow.cfg
        +++ airflow.cfg.new
        @@ -9,7 +9,7 @@
         
         # Airflow can store logs remotely in AWS S3, Google Cloud Storage or 
Elastic Search.
         # Set this to True if you want to enable remote logging.
        -remote_logging = False
        +remote_logging = True
         
         # Users must supply an Airflow connection id that provides access to 
the storage
         # location.
        @@ -754,7 +754,7 @@
         
         [elasticsearch]
         # Elasticsearch host
        -host =
        +host = localhost:9200
         
         # Format of the log_id, which is used to query for a given tasks logs
         log_id_template = {dag_id}-{task_id}-{execution_date}-{try_number}
        @@ -768,10 +768,10 @@
         frontend =
         
         # Write the task logs to the stdout of the worker, rather than the 
default files
        -write_stdout = False
        +write_stdout = True
         
         # Instead of the default log formatter, write the log lines as JSON
        -json_format = False
        +json_format = True
         
         # Log fields to also attach to the json output, if enabled
         json_fields = asctime, filename, lineno, levelname, message
   
   </details>
   
   Run the `example_bash_operator` DAG to generate log output. Check log files 
or stdout for JSON output.
   
   **Anything else we need to know**:
   
   I was able to reproduce this pretty consistently regardless of the 
environment I was testing in, however I never bothered to try setting the 
configuration via Environment Variables nor did I try to run it in any sort of 
containerized environment (such as Kubernetes).


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to