mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-08-05 21:14:05 -06:00
queuelogger: Add support for background log writing
Writing to the debug log can cause an unbounded delay due to disk IO. This is particularly so on embedded machines such as the Raspberry Pi that run on SD cards. These log writing delays can cause problems for the main processing threads. The new "queuelogger" code forwards all the main thread log messages to a queue, and a background thread writes the log messages from the queue to the destination file. This eliminates the IO delay from the main threads. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
afecf7ce36
commit
1dee1ba64e
3 changed files with 58 additions and 6 deletions
|
@ -5,7 +5,7 @@
|
|||
#
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
import sys, optparse, ConfigParser, logging, time, threading
|
||||
import gcode, toolhead, util, mcu, fan, heater, extruder, reactor
|
||||
import gcode, toolhead, util, mcu, fan, heater, extruder, reactor, queuelogger
|
||||
|
||||
class ConfigWrapper:
|
||||
def __init__(self, printer, section):
|
||||
|
@ -132,7 +132,7 @@ def main():
|
|||
opts.error("Incorrect number of arguments")
|
||||
conffile = args[0]
|
||||
|
||||
debuginput = debugoutput = None
|
||||
debuginput = debugoutput = bglogger = None
|
||||
|
||||
debuglevel = logging.INFO
|
||||
if options.verbose:
|
||||
|
@ -142,8 +142,7 @@ def main():
|
|||
if options.outputfile:
|
||||
debugoutput = open(options.outputfile, 'wb')
|
||||
if options.logfile:
|
||||
logoutput = open(options.logfile, 'wb')
|
||||
logging.basicConfig(stream=logoutput, level=debuglevel)
|
||||
bglogger = queuelogger.setup_bg_logging(options.logfile, debuglevel)
|
||||
else:
|
||||
logging.basicConfig(level=debuglevel)
|
||||
logging.info("Starting Klippy...")
|
||||
|
@ -159,5 +158,8 @@ def main():
|
|||
store_dictionary(options.write_dictionary, printer)
|
||||
printer.run()
|
||||
|
||||
if bglogger is not None:
|
||||
bglogger.stop()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue