- Improve the performance of logging records by inlining log creation to remove temporary Python objects into the logger. by @tonybaloney in #186
- Improve the performance of logger methods with fastcalls by @tonybaloney in #188
- Improve perf and memory usage of log records with const level names by @tonybaloney in #190
- Add example using picologging and django by @tonybaloney in #194
- Fix setLogRecordFactory exception message by @GabrielCappelli in #196
- Fix asctime formatting, don't print uninitialized buffer's content (issue #203) by @tarasko in #208
- Add a test for issue Using
asctime
in formatter by @tonybaloney in #210
- Support for Python 3.12
- Module can be used in sub-interpreters (3.12+)
- Allow LogRecord to be copied by @aminalaee in #164
- Fix memory leak in LogRecord.dict. Use Py_NewRef and Py_CLEAR patterns for cleaner code by @tonybaloney in #173
- Fix
io
text_encoding on Python 3.9 and older by @aminalaee in #152 - Add tests for override formatter formatException by @aminalaee in #140
- Fix formatting issues by @aminalaee in #160
- Add FileHandler errors argument by @aminalaee in #161
- Move filepath cache to within free-able module state by @tonybaloney in #166
- Bump pypa/cibuildwheel from 2.12.3 to 2.15.0 by @dependabot in #158
- Use a module state attribute to support subinterpreters by @tonybaloney in #167
- Cleanup all danging unicode references. by @tonybaloney in #169
- Adopt the memray trace leaks test markers by @tonybaloney in #137
- Fix unclosed resources in tests by @aminalaee in #171
- Verify the integration of coloredlogs is fixed by @tonybaloney in #174
- Upgrade pre-commit hooks versions by @sadikkuzu in #133
- Compile x86 for linux and windows. Compile aarch64 for linux by @tonybaloney in #135
- moves devcontainer vscode settings by @kjaymiller in #143
- Fix Formatter repr by @aminalaee in #141
- Fix leaks in dict and asctime fields by @tonybaloney in #145
- Add Logger isEnabledFor by @aminalaee in #139
- Support Logger.setLevel from string input by @tonybaloney in #146
- Add Windows Arm64 wheels by @aminalaee in #130
- Remove #22 as limitation since it's been fixed by @tonybaloney in #128
- Remove QueueListener test by @aminalaee in #101
- Fix formatting with black by @aminalaee in #71
- Improve test coverage by @tonybaloney in #72
- Fix FileHandler flaky test by @aminalaee in #69
- Update project classifiers by @aminalaee in #74
- Uplift test coverage by @aminalaee in #76
- Making LogRecord class derivable by @pamelafox in #77
- Properly raise error from Handler.emit by @pamelafox in #81
- Properly handle return value for setStream by @pamelafox in #82
- Fixing Stream.repr to match CPython by @pamelafox in #84
- Add Handler repr by @aminalaee in #88
- Allow handle method to accept LogRecord subclasses by @aminalaee in #85
- Fix Handler.handle return type by @aminalaee in #86
- Make config fix by @pamelafox in #97
- Add failing Queue Listener Handler Test by @Goldziher in #89
- Add local development instructions to readme by @pamelafox in #104
- Add launch.json instructions to README by @pamelafox in #106
- Create py.typed by @Goldziher in #92
- Add config.pyi stub by @aminalaee in #100
- Add pylint config by @pamelafox in #107
- 3.7+ compatible code by @tonybaloney in #114
- Document the memray tests and add a script for automation by @tonybaloney in #113
- Adding regression test for LogRecord args issue by @pamelafox in #105
- Fix leaks identified memray by @tonybaloney in #115
- Set logger parents and levels by @pamelafox in #108
- Adding parameters to flaky decorator to increase reruns by @pamelafox in #118
- Adding precommit with black and pyupgr by @pamelafox in #119
- Call dealloc of base types by @pamelafox in #120
- Add isort by @pamelafox in #121
- Test on 3.11 vs 3.11-dev by @pamelafox in #127
- Make QueueHandler call format by @pamelafox in #122
- Fix
dictconfig
resetting child loggers by @aminalaee in #70 - Add
formatException
method inFormatter
by @aminalaee in #68
- Fix leak on levelname and formatted message #59
- Fixes a leak in the
asctime
field of log record #60 - Fixes a leak in stream writer write() and flush() calls #60
- Fixes a leak in stream close() #60
- Add a basic documentation site by @tonybaloney in #55
- Fix Logger setLevel not resetting other levels by @aminalaee in #57
- Fixes reference leaks in filterer 'filter' string and relative time by @tonybaloney in #58
- Add
MemoryHandler
by @aminalaee in #46 - Make
getLevelName()
work level name arguments by @aminalaee in #52 - Add
makeLogRecord()
by @aminalaee in #50 - Add
SocketHandler
by @aminalaee in #48
- Implements QueueListener and QueueHandler in
picologging.handlers
module for non-blocking logging by @tonybaloney in #44 - Fix a crash on ubuntu by @tonybaloney in #42
- Add BufferingHandler by @aminalaee in #45
- Fixes a crash on string literal within a loop in certain cases
- Fixes a crash in 32-bit Linux wheels crashing when
validate=True
flag is used for the Formatter type
- String format
{field}
is now supported usingFormatter(style='{')
- Logger now supports
sinfo=True
to add stack info to log messages - Fixed a bug where formatters using the
created
field were not correctly formatted - Fixed a bug where formatters using the thread id,
thread
field were formatted as signed int instead of unsigned long - Fixed a bug in the
__repr__
method of PercentStyle - Fixed a bug that the Logger.exception() method wasn't checking the log level for ERROR
- Fixed a bug in the formatting of exception messages
- Setting the parent of a logger which has a NOTSET level will now update it's logging level to adopt the next set parent's level
- Add Fuzzing and coverage configuration for Clang/GCC by @tonybaloney in #26
- Add WatchedFileHandler by @aminalaee in #23
- Expand test suite with error cases by @tonybaloney in #27
- Refactor type field initializers to
__new__
by @tonybaloney in #28 - Add tests for FileHandler delay by @aminalaee in #24
- Add BaseRotatingHandler by @aminalaee in #25
- Added
FileHandler
to picologging - Fixed an issue with the
Logger.setLevel()
method not correctly resetting level flags in the logger - Fixed a memory leak in the logging and handler types
- Adds
.close()
,.flush()
,.createLock()
abstract methods to Handler #9 - Corrected type stubs for Handler
__init__
- Added simple
handleError
method to base Handler type to print the exception on sys.stderr - Added
.get_name()
and.set_name()
methods to Handler - Fixes a bug in stream handler swallowing error message when
.write()
failed on the underlying stream - Repeat all tests and isolate reference bugs in formatter and handler #12
- Fix root logger instantiation with wrong arguments #15
- Fix getlevelname missing from module #16
- Fixes StreamHandler not defaulting to sys.stderr when stream argument is None #18
- Initial release
- Handler base class
- Stream Handler support