metaflow icon indicating copy to clipboard operation
metaflow copied to clipboard

logger.error does not output to stderr

Open yank666 opened this issue 10 months ago • 2 comments

I want to add more detailed error describe in stderr if a step faild , but when i use logger.error print ,running.stderr dosen't print my error log

if __name__=="__main__":
    with Runner('first_flow.py', show_output=True, pylint=False).run() as running:
        print(running.stderr)

here is my simple workflow

from logging import getLogger
from metaflow import FlowSpec, step, current

logger = getLogger(__name__)

class HelloFlow(FlowSpec):
    def __init__(self, use_cli=True):
        super().__init__(use_cli)
        self.doc = None

    @step
    def start(self):


        self.next(self.hello)

    @step
    def hello(self):
        logger.error(f"HelloFlow failed to hello, {current.run_id}")
        raise ValueError("error again")
        self.next(self.end)


   

    @step
    def end(self):
        pass

yank666 avatar Feb 26 '25 02:02 yank666

you might need to configure logger to emit to stderr

handler = logging.StreamHandler(sys.stderr)
logger.addHandler(handler)

savingoyal avatar Feb 26 '25 02:02 savingoyal