Gowtham Manne
09/13/2022, 7:33 PM@logger(
{
"log_level": Field(str, is_required=False, default_value="INFO"),
"name": Field(str, is_required=False, default_value="dagster"),
},
description="A JSON-formatted console logger",
)
def json_console_logger(init_context):
level = init_context.logger_config["log_level"]
name = init_context.logger_config["name"]
klass = logging.getLoggerClass()
logger_ = klass(name, level=level)
handler = logging.StreamHandler()
class JsonFormatter(logging.Formatter):
def format(self, record):
return json.dumps(record.__dict__)
handler.setFormatter(JsonFormatter())
logger_.addHandler(handler)
return logger_
@op
def hello_logs(context):
<http://context.log.info|context.log.info>("Hello, world!")
@job(logger_defs={"my_json_logger": json_console_logger})
def demo_job():
hello_logs()
But its does not seems to be working ? Any suggestions ? Expecting logs to look something like belowfrom dagster import op, job, repository, In,Out, OpExecutionContext, logger, Field
import logging
from io import StringIO
STREAM = None
@logger({
"log_level": Field(str, is_required=False, default_value="INFO"),
"name": Field(str, is_required=False, default_value="custom dagster logger"),
},description="A custom Logger",)
def prepare_custom_log():
name="custom_dagster_log"
stream = StringIO()
klass = logging.getLoggerClass()
log = klass(name, level=<http://logging.INFO|logging.INFO>)
handler = logging.StreamHandler(stream)
log.setLevel(<http://logging.INFO|logging.INFO>)
for handler in log.handlers:
log.removeHandler(handler)
log.addHandler(handler)
return log
@op(
name="HELLO_LOGS",
out={"result":Out(dagster_type=str)}
)
def hello_logs(context):
<http://context.log.info|context.log.info>("HELLO LOGS")
return "Nothing"
@job(logger_defs={"my_json_logger": prepare_custom_log})
def demo_job():
hello_logs()
if __name__=="__main__":
demo_job.execute_in_process()
But i don't see any change. Appreciate any help on this