https://dagster.io/ logo
#ask-community
Title
# ask-community
g

Gowtham Manne

09/13/2022, 7:33 PM
Hi All, I am trying to customize our log and trying the example given in the docs
Copy code
@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 below
I have re-return above code
Copy code
from 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
5 Views