i think we all agree that syslog on macos is a lost cause.
the corollary is that pointing python logging at syslog (via
logging.handlers.SysLogHandler) is doomed
i accept that syslog works fine on most platforms, but it is not feasible for
macos
but there is the simple alternative for macos users of using a different
handler:
i patched log_dict in bin/weeutil/logger.py to add a
logging.handlers.RotatingFileHandler and it worked fine.
adding it via weewx.conf gives a type conversion error that seems simple to fix.
with the fix, i would suggest this be added to the macos installation
instructions for user to add to weewx.conf (or make it part of the installation
process)
details follow...
weewx.conf (yes, using that ‘root’ hack introduced to work around a ConfigObj
limitation):
[Logging]
[[loggers]]
[[[root]]]
level = DEBUG
propogate = True
handlers = syslog, rotate
[[handlers]]
[[[rotate]]]
level = DEBUG
formatter = standard
class = logging.handlers.RotatingFileHandler
filename = /tmp/weewx.log
maxBytes = 10000000
backupCount = 2
gives the following error, which on the face of it would take a simple fix of
type conversions:
Traceback (most recent call last):
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py",
line 563, in configure
handler = self.configure_handler(handlers[name])
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py",
line 736, in configure_handler
result = factory(**kwargs)
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/handlers.py",
line 146, in __init__
if maxBytes > 0:
TypeError: '>' not supported between instances of 'str' and ‘int’ < - - - SEE
HERE
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "bin/weewxd", line 261, in <module>
main()
File "bin/weewxd", line 136, in main
weeutil.logger.setup(options.log_label, config_dict)
File "/opt/weewx/bin/weeutil/logger.py", line 203, in setup
logging.config.dictConfig(log_dict)
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py",
line 800, in dictConfig
dictConfigClass(config).configure()
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py",
line 571, in configure
'%r' % name) from e
ValueError: Unable to configure handler 'rotate'
the log_dict it produces before crashing seems correct:
{'version': 1, 'disable_existing_loggers': False, 'loggers': {'': {'level':
'DEBUG', 'propagate': True, 'handlers': ['syslog'], 'propogate': 'True'}},
'handlers': {'syslog': {'level': 'DEBUG', 'formatter': 'standard', 'class':
'logging.handlers.SysLogHandler', 'address': '/var/run/syslog', 'facility':
'local1'}, 'console': {'level': 'DEBUG', 'formatter': 'verbose', 'class':
'logging.StreamHandler', 'stream': 'ext://sys.stdout'}, 'rotate': {'level':
'DEBUG', 'formatter': 'standard', 'class':
'logging.handlers.RotatingFileHandler', 'filename': '/tmp/weewx.log',
'maxBytes': '10000000', 'backupCount': '2'}}, 'formatters': {'simple':
{'format': '%(levelname)s %(message)s'}, 'standard': {'format':
'weewx[%(process)d] %(levelname)s %(name)s: %(message)s'}, 'verbose':
{'format': '%(asctime)s weewx[%(process)d] %(levelname)s %(name)s:
%(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S'}}}
cheers
> On 2 May 2020, at 10:42 pm, Tom Keffer <[email protected]> wrote:
>
> Logging from Python under MacOS High Sierra and later is a complete mystery.
> I have been unable to get it to work and, it seems, neither have other
> <https://apple.stackexchange.com/questions/256769/how-to-use-logger-command-on-sierra>
> users
> <https://stackoverflow.com/questions/49805750/macos-high-sierra-syslog-does-not-work/51052538>.
>
> Wish I could be of more help...
>
> -tk
>
> On Sat, May 2, 2020 at 5:26 AM Graham Eddy <[email protected]
> <mailto:[email protected]>> wrote:
> i reported this incorrectly. instead of giveing me an unchanged logger
> format, it gives me no lines at all (from the point the weewx.conf log format
> is parsed). even the following does the same (no logger output). commenting
> out the “format” line reverts to lines being produced, in original format of
> course
>
> [Logging]
> [[formatters]]
> [[[standard]]]
> format = '%(message)s'
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-user/85C23BE1-912C-4EAA-80AC-F7E81F8EE021%40gmail.com.