Hi, I’m currently using this to log my python process

logging.basicConfig(filename='filename.log', level=logging.DEBUG)

logger = logging.getLogger()

sys.stderr.write = logger.error

sys.stdout.write = logger.info

And then using print(f’{datetime.now()} log message’) where I want to log.

It’s working OK, buy I would like to live it to ic, but can’t find any info on how to send the ic output to the logger.

Thanks for any help.

  • sloppy_diffuser@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    Never used ic before, but there is an example in the README on GitHub.

    >>> import logging
    >>> from icecream import ic
    >>>
    >>> def warn(s):
    >>>     logging.warning(s)
    >>>
    >>> ic.configureOutput(outputFunction=warn)
    >>> ic('eep')
    WARNING:root:ic| 'eep': 'eep'
    
  • cbarrick@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    Overwriting sys.stdout and sys.stderr seems like a Bad Idea™.

    Browsing the icecream source code, it looks like you can do this:

    logger = logging.getLogger()
    ic.configureOutput(outputFunction=logger.debug)
    

    And then just make sure the logger is configured to actually print at DEBUG level.

    • driving_crooner@lemmy.eco.brOP
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      3 months ago

      Thanks, tried the next

      logging.basicConfig(filename='filename.log', level=logging.DEBUG)
      
      logger = logging.getLogger()
      ic.configureOutput(outputFunction=logger.debug)
      
      ic('test')
      
      

      But didn’t create the log file and the output was printed on the screen and not on log file(that was never created anyway)

      • cbarrick@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        3 months ago

        Just to confirm, if you change ic('test') to logger.debug('test') it works as expected? I.e. it creates the log file?

        Edit: Also if you change the output format of the logger and use it as the outputFunction to ic, does it include the customized format?

        I just want to confirm if your ic is routing through the logger or not, to know if it’s a problem with your logging config or with ic.