Getting Syslog working on OSX Monterey

Barry barry at barrys-emacs.org
Sun Feb 27 17:16:54 EST 2022



> On 27 Feb 2022, at 18:36, Philip Bloom via Python-list <python-list at python.org> wrote:
> 
> Hello,
> 
> First time mailing and looking for help/guidance.  Hopefully not too in the
> wrong place.
> 
> We've had an app with logging to a /var/log for many years through
> logging.sysloghandler.  Recently, though, I noticed that it suddenly was
> getting no logs whatsoever over there and investigated, believing the
> recent triggering change was upgrading to Mac OSX 12 (Monterey).
> 
> My understanding is a bit primitive, but our config had never been hard to
> follow previously and I may be missing something fundamental.  I've looked
> over a number of online examples but they don't seem to be running
> correctly either.  I'm on Python 3.6.8 (though we're about to start an
> upgrade to the latest stable, if that in theory may have changes to syslog
> handling).  I'm mostly ending up here since I'm finding such differences in
> response between python modules I'd expect to be fairly similar.
> 
> Separating into a test script I've been testing with logging.SysLogHandler,
> syslog, and the command line 'syslog -s'.  Replaced all below with a
> placeholder appName but it's normally a fairly unique setupCDNGUI name.
> 
> Example with syslog (python module):  - This will show up in System.log but
> not in Apple's Console for all messages to device, though won't get all the
> way to file.
> import syslog
> syslog.syslog(syslog.LOG_NOTICE, 'AppName: THIS IS A TEST - Processing
> started')
> syslog.syslog(syslog.LOG_ERR, 'AppName: THIS IS A TEST ERROR - Processing
> started')
> 
> Example with SyslogHandler: - This doesn't seem to show up anywhere besides
> the screen log, which is odd to me as reading the docs, I understood this
> to be a logging integration into the syslog module, so expected similar
> behavior in at least what was sent out.  Syslog handler is definitely
> picked up in logging.handlers
> 
> root_logger = logging.getLogger()
> root_logger.setLevel(logging.DEBUG)
> basic_datefmt = '%m/%d/%Y %I:%M:%S %p'
> 
> formatter = logging.Formatter(fmt='%(asctime)s %(levelname)s: %(message)s',
> datefmt=basic_datefmt)
> syslog_format = logging.Formatter(fmt='SetupCDNGUI: %(message)s',
> datefmt=basic_datefmt)
> 
> scrhandler = logging.StreamHandler()
> scrhandler.setFormatter(formatter)
> root_logger.addHandler(scrhandler)
> 
> sys_handler = SysLogHandler(address='/var/run/syslog')
> #sys_handler.encodePriority(SysLogHandler.LOG_USER, SysLogHandler.LOG_ALERT)
> # Tried with the above, but didn't make a difference.  Neither did not
> defining the address and letting it go to local host.
> sys_handler.setFormatter(syslog_format)
> root_logger.addHandler(sys_handler)
> 
> logging.critical("This is a test")
> logging.error("This is a test error")
> logging.info("Still a test")
> logging.debug("Testy test")
> 
> Using command line: Oddly, this gets to Console.Apps messages from device
> reliably, though doesn't get picked up by syslog -w or get received by the
> ASL config redirect:
> syslog -s -l error -k Message "appName: this is a test2"
> syslog -s -l notice -k Message "appName: this is a test3"
> 
> ASL configuration, which is loaded according to syslog -config:
>> /var/log/appName/appName.log mode=0640 compress format=std rotate=seq
> file_max=50M all_max=500M
> ? [CA= Sender appName] file /var/log/appName/appName.log
> 
> My end goal is really to get just a working python logging ->
> var/log/appname/appname.log again so glad to just be pointed in the right
> direction if way off base.

If you look at the code of the logging modules syslog handle you will see that
it does not use syslog. It’s assuming that it can network to a syslog listener.
Such a listener is not running on my systems as far as I know.

I have always assumed that if I want a logger syslog handler that I would have
to implement it myself. So far I have code that uses syslog directly and have
not written that code yet.

Barry

> 
> -- 
> Philip Bloom
> Director, Services Engineering
> *AppLovin Corporation*
> M: (786)-338-1439 <786-338-1439>
> [image: LinkedIn] <https://www.linkedin.com/company/applovin> [image:
> Twitter] <https://twitter.com/AppLovin> [image: Facebook]
> <https://facebook.com/AppLovin> [image: Instagram]
> <https://www.instagram.com/applovin/>
> [image: AppLovin] <https://www.applovin.com/>
> -- 
> https://mail.python.org/mailman/listinfo/python-list
> 



More information about the Python-list mailing list