> On 7 Oct 2019, at 00:44, Ian Pilcher <arequip...@gmail.com> wrote:
>
> On 10/6/19 12:55 PM, Barry Scott wrote:
>> Then the answer to your question is simple. Do it in python and passt
>> logger into the C++ module.
>
> Funny thing, that's exactly where I started this journey. I couldn't
> figure out how to get the logging.Logger type object, so that I could
> use a "O!" format string unit. This led me to read a bit more about
> the logging framework, which led me to the advice to get loggers by
> name, rather than passing them around, etc., etc.
In PyCXX I never need to use the "O!" stuff.
I write something like this (untested):
// function in foo module
Py::Object function( const Py::Tuple &args, const Py::Dict &kws )
{
Py::Object logger( args[0] );
Py::Tuple log_args( 1 );
args[0] = Py::String( "log message" );
logger.callMemberFunction( "info", log_args );
return Py::None();
}
I'd call from Python something like:
import foo
import logging
logger = logging.getLogger(__name__)
foo.function( logger )
>
>> Next I would never code directly against the C API. Its a pain to use
>> and get right, get the ref counts wrong and you get memory leaks of
>> worse crash python.
>
> Well, I like driving cars with manual transmissions, so ...
Understood.
Barry
>
> --
> ========================================================================
> Ian Pilcher arequip...@gmail.com
> -------- "I grew up before Mark Zuckerberg invented friendship" --------
> ========================================================================
>
--
https://mail.python.org/mailman/listinfo/python-list