Skip to content

Delogger is a convenient logging package.

License

Notifications You must be signed in to change notification settings

deresmos/delogger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

delogger

PyPI License: MIT test CodeQL

About

Delogger is a Python package that makes easy use of decided logging.

Delogger

  • It behaves like normal logging.

DeloggerQueue

  • Non-blocking logging using QueueHandler.

Installation

To install Delogger, use pip.

pip install delogger

Sample

Debug stream and output log

from delogger.presets.debug import logger

if __name__ == "__main__":
    logger.debug("debug msg")
    logger.info("info msg")
    logger.warning("warn msg")
    logger.error("error msg")
    logger.critical("critical msg")

Output debug_sample_output

File output (./log/20201010_164622.log)

2020-10-10 16:46:22.050 DEBUG debug_preset.py:4 <module> debug msg
2020-10-10 16:46:22.050 INFO debug_preset.py:5 <module> info msg
2020-10-10 16:46:22.051 WARN debug_preset.py:6 <module> warn msg
2020-10-10 16:46:22.051 ERROR debug_preset.py:7 <module> error msg
2020-10-10 16:46:22.051 CRIT debug_preset.py:8 <module> critical msg

and more samples

Preset

  • debug: Output color debug log and save log file.
  • debug_stream: Output color debug log.
  • output: Save log file and notify to slack.
  • profiler: Same debug preset and seted profiles decorator.

Mode

  • CountRotatingFileMode: Backup count rotating.
  • TimedRotatingFileMode: Same logging.handlers.TimedRotatingFileHandler.
  • SlackWebhookMode: Log to slack. (Incomming webhook)
  • SlackTokenMode: Log to slack. (token key)
  • StreamColorDebugMode: Output color log. (debug and above)
  • StreamDebugMode: Output noncolor log. (debug and above)
  • StreamInfoMode: Output noncolor log. (info and above)
  • PropagateMode: Set Setropagate true.

Environment

  • DELOGGER_NAME: logger name for presets.
  • DELOGGER_FILEPATH: output log filepath for presets.
  • DELOGGER_SLACK_WEBHOOK: send slack for presets.

Decorator

Inject decorator into logger.

debuglog

DEBUG 21:00:00 debug_log.py:32 START test args=('test',) kwargs={}
DEBUG 21:00:01 debug_log.py:39 END test return=value

line_profile

Required line_profiler package.

DEBUG 21:38:22 line_profile.py:28 line_profiler result
Timer unit: 1e-06 s

Total time: 6.4e-05 s
File: test.py
Function: test at line 6

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     6                                           @logger.line_profile
     7                                           def test(arg1):
     8       101         43.0      0.4     67.2      for i in range(100):
     9       100         21.0      0.2     32.8          pass
    10         1          0.0      0.0      0.0      return i

memory_profile

Required memory_profiler package.

DEBUG 21:40:31 memory_profile.py:25 memory_profiler result
Filename: test.py

Line #    Mem usage    Increment   Line Contents
================================================
     6    37.96 MiB    37.96 MiB   @logger.memory_profile
     7                             def test(arg1):
     8    45.43 MiB     7.47 MiB       a = [0] * 1000 * 1000
     9    45.43 MiB     0.00 MiB       for i in range(100):
    10    45.43 MiB     0.00 MiB           pass
    11    45.43 MiB     0.00 MiB       return i

line_memory_profile

Required line_profiler and memory_profiler package.

DEBUG 21:41:08 line_memory_profile.py:70 line, memory profiler result
Timer unit: 1e-06 s

Total time: 0.004421 s
File: test.py
Function: test at line 6

Line #      Hits         Time  Per Hit   % Time    Mem usage    Increment   Line Contents
=========================================================================================
     6                                             37.96 MiB    37.96 MiB   @logger.line_memory_profile
     7                                                                      def test(arg1):
     8         1       4355.0   4355.0     98.5    45.43 MiB     7.47 MiB       a = [0] * 1000 * 1000
     9       101         33.0      0.3      0.7    45.43 MiB     0.00 MiB       for i in range(100):
    10       100         32.0      0.3      0.7    45.43 MiB     0.00 MiB           pass
    11         1          1.0      1.0      0.0    45.43 MiB     0.00 MiB       return i

add_line_profile

  • It can adjust the timing of profile output

Required line_profiler package.

DEBUG 21:45:55 line_profile.py:67 line_profiler_stats result
Timer unit: 1e-06 s

Total time: 0.009081 s
File: test.py
Function: test at line 6

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     6                                           @logger.add_line_profile
     7                                           def test(arg1):
     8         2       8957.0   4478.5     98.6      a = [0] * 1000 * 1000
     9       202         71.0      0.4      0.8      for i in range(100):
    10       200         52.0      0.3      0.6          pass
    11         2          1.0      0.5      0.0      return i

About

Delogger is a convenient logging package.

Resources

License

Stars

Watchers

Forks

Packages

No packages published