O'Reilly logo

Learning Cython Programming - Second Edition by Philip Herron

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Logging from C/C++ into Python

An example of everything brought together is reusing the Python logging module directly from C. We want a few macros, such as info, error, and debug that can all handle a variable number of arguments and works as if we are calling a simple printf method.

To achieve this, we must make a Python logging backend for our C/C++ code. We need an initialization function to tell Python about our output logfile, and some wrappers for each info, error, and debug. We can simply write the public cdef wrappers as:

import logging

cdef public void initLoggingWithLogFile(const char * logfile):
    logging.basicConfig(filename = logfile,
                        level = logging.DEBUG,
                        format = '%(levelname)s %(asctime)s: %(message)s',
 datefmt = '%m/%d/%Y %I:%M:%S') ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required