[libcamera-devel] [PATCH] libcamera: keep using syslog logging target also for isolated IPA modules

Matthias Fend matthias.fend at emfend.at
Mon Feb 20 10:13:06 CET 2023


Hi Jacopo,

Am 20.02.2023 um 09:50 schrieb Jacopo Mondi:
> Hello Matthias
> 
> On Mon, Feb 20, 2023 at 08:43:52AM +0100, Matthias Fend via libcamera-devel wrote:
>> Currently it is not possible to display debug output from an isolated IPA
>> module. The standard  descriptors are all closed and any specified log
>> file is explicitly deactivated for the IPA module. Since libcamera and the
>> isolated IPA modul are separate processes, they cannot write to the same
>> file. However, if syslog is used, then this would be possible.
>>
>> If syslog is specified as a log file, then this is left as it is for the
>> isolated IPA module.
>>
> 
> I'm certainly missing something, but doesn't logging to syslogd
> happens through the 'syslog()'[1] function call ?

If LIBCAMERA_LOG_FILE is set to 'syslog', the logging target is set to 
'LoggingTargetSyslog', which instructs the libcamera logger to use 
syslog() to output log messages. This is already implemented.

However, this environment variable is explicitly deleted for an isolated 
IPA module. This change only prevents this behavior if syslog is to be used.

I don't see any other way to see the debug output of such a module - 
apart from adapting the libcamera source code of course.

~Matthias

> 
> [1] https://linux.die.net/man/3/syslog
> 
>> Signed-off-by: Matthias Fend <matthias.fend at emfend.at>
>> ---
>>   src/libcamera/process.cpp | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
>> index 0e6b4e1d..86a382fb 100644
>> --- a/src/libcamera/process.cpp
>> +++ b/src/libcamera/process.cpp
>> @@ -263,7 +263,9 @@ int Process::start(const std::string &path,
>>
>>   		closeAllFdsExcept(fds);
>>
>> -		unsetenv("LIBCAMERA_LOG_FILE");
>> +		const char *file = utils::secure_getenv("LIBCAMERA_LOG_FILE");
>> +		if (file && strcmp(file, "syslog"))
>> +			unsetenv("LIBCAMERA_LOG_FILE");
>>
>>   		const char **argv = new const char *[args.size() + 2];
>>   		unsigned int len = args.size();
>> --
>> 2.25.1
>>


More information about the libcamera-devel mailing list