Skip to content

openstax/pyramid_sawing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pyramid Sawing

A Pyramid framework plugin for configurating logging via YAML. This uses the Python standard-library's logging (initialized using logging.config.dictConfig).

Include the package in your project, either by adding to the INI configuration:

pyramid.includes = pyramid_sawing
pyramid_sawing.file = my-logging-config.yaml

Or declarative via the configuration object:

config.include('pyramid_sawing')
assert 'pyramid_sawing.file' in config.registry.settings

You'll be required to specify a logging configuration file at pyramid_sawing.file, which points to the file that contains your YAML logging configuration.

This configuration follows the standard-library's logging.config dictionary schema

An example configuration might look like this:

###
# logging configuration
###
version: 1

formatters:
  generic:
    format    : '%(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s'
  papertrail:
    format    : '%(asctime)s %(hostname)s my_project %(message)s'
    datefmt   : '%Y-%m-%dT%H:%M:%S'
filters:
  context:
    ()        : pyramid_sawing.filters.ContextFilter
handlers:
  console:
    class     : logging.StreamHandler
    level     : NOTSET
    formatter : generic
    stream    : 'ext://sys.stdout'
  syslog:
    class     : logging.handlers.SysLogHandler
    level     : DEBUG
    formatter : papertrail
    filters   : [context]
    address   : ['<host>.papertrailapp.com', 11111]
loggers:
  my_project:
    level     : INFO
    handlers  : [console, syslog]
    propagate : 0
root:
  level       : NOTSET
  handlers    : []

A typical gotcha in configuring this is to forget the 'version'. Please make sure you include version: 1 in your configuration.

This resembles the functionality you would find in pyramid_translogger except that this implementation is more configurable.

To enable this feature, add the following line to your configuraton/settings.

pyramid_sawing.transit_logging.enabled? = yes
# Optional...
# The default logger_name is `transit_logger`
pyramid_sawing.transit_logging.logger_name = lumberjack

A template for configuring the transit logger would be something like:

formatters:
  apache_style:
    # filters : [environ]
    format    : '%(REMOTE_ADDR)s - %(REMOTE_USER)s [%(asctime)s] "%(REQUEST_METHOD)s %(REQUEST_URI)s %(HTTP_VERSION)s" %(status)s %(bytes)s "%(HTTP_REFERER)s" "%(HTTP_USER_AGENT)s"'
    datefmt   : '%d/%b/%Y:%H:%M:%S'
filters:
  environ:
    ()        : pyramid_sawing.filters.EnvironFilter
handlers:
  console:
    class     : logging.StreamHandler
    formatter : apache_style
    filters   : [environ]
    stream    : 'ext://sys.stdout'
loggers:
  transit_logger:
    handlers  : [console]
    propagate : 0

This should give you the exact same output as pyramid_translogger.

This software is subject to the provisions of the GNU Affero General Public License Version 3.0 (AGPL). See LICENSE.txt for details. Copyright (c) 2015 Rice University

About

Pyramid plugin for YAML logging configuration.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages