[libcamera-devel] [RFC v1 2/7] py: Add Python logging category
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jun 27 10:18:18 CEST 2022
Hi Tomi,
On Mon, Jun 27, 2022 at 09:48:34AM +0300, Tomi Valkeinen wrote:
> On 24/06/2022 12:50, Laurent Pinchart wrote:
> > On Thu, Jun 23, 2022 at 05:47:31PM +0300, Tomi Valkeinen wrote:
> >> Add Python logging category, and use it in handleRequestCompleted().
> >>
> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
> >> ---
> >> src/py/libcamera/py_main.cpp | 8 ++++++--
> >> src/py/libcamera/py_main.h | 12 ++++++++++++
> >> 2 files changed, 18 insertions(+), 2 deletions(-)
> >> create mode 100644 src/py/libcamera/py_main.h
> >>
> >> diff --git a/src/py/libcamera/py_main.cpp b/src/py/libcamera/py_main.cpp
> >> index 505cc3dc..17b17f60 100644
> >> --- a/src/py/libcamera/py_main.cpp
> >> +++ b/src/py/libcamera/py_main.cpp
> >> @@ -5,6 +5,8 @@
> >> * Python bindings
> >> */
> >>
> >> +#include "py_main.h"
> >> +
> >> #include <mutex>
> >> #include <stdexcept>
> >> #include <sys/eventfd.h>
> >> @@ -23,6 +25,8 @@ namespace py = pybind11;
> >>
> >> using namespace libcamera;
> >>
> >> +LOG_DEFINE_CATEGORY(Python)
> >> +
> >> template<typename T>
> >> static py::object valueOrTuple(const ControlValue &cv)
> >> {
> >> @@ -120,10 +124,10 @@ static void handleRequestCompleted(Request *req)
> >> size_t s = write(gEventfd, &v, 8);
> >> /*
> >> * We should never fail, and have no simple means to manage the error,
> >> - * so let's use LOG(Fatal).
> >> + * so let's use LOG(Python, Fatal).
> >
> > You could also write "so let's log a fatal error".
>
> Yep.
>
> >> */
> >> if (s != 8)
> >> - LOG(Fatal) << "Unable to write to eventfd";
> >> + LOG(Python, Fatal) << "Unable to write to eventfd";
> >> }
> >>
> >> void init_py_enums(py::module &m);
> >> diff --git a/src/py/libcamera/py_main.h b/src/py/libcamera/py_main.h
> >> new file mode 100644
> >> index 00000000..1b543a55
> >> --- /dev/null
> >> +++ b/src/py/libcamera/py_main.h
> >> @@ -0,0 +1,12 @@
> >> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> >> +/*
> >> + * Copyright (C) 2022, Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
> >> + */
> >> +
> >> +#pragma once
> >> +
> >> +#include <libcamera/base/log.h>
> >> +
> >> +using namespace libcamera;
> >
> > "using namespace" directives are discouraged in header files, as they
> > will propagate to all compilation units. Could this be avoided ? With
> > that fixed,
>
> LOG_DECLARE_CATEGORY() requires either using namespace or being inside
> libcamera namespace.
>
> I guess I could move all the python bindings code to be inside libcamera
> namespace.
You can also do
namespace libcamera {
LOG_DECLARE_CATEGORY(Python)
}
> Then again, these are bindings internal headers and as such
> the using namespace should cause no issues.
That's true, but it's still not a great practice, and if it's easy to
fix, it could prevent problems later (and it's also nice not to give any
excuse for cargo-cult misuse of "using namespace" directives :-)).
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list