---
name: "qb_log_from_external_source"
section: "3"
platform: "linux"
package: "libqb"
version: "2.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/qb_log_from_external_source"
---

# qb\_log\_from\_external\_source(3)

This function is to import logs from other code (like libraries) that provide a callback with their logs.

## NAME

qb\_log\_from\_external\_source - This function is to import logs from other code (like libraries) that provide a callback with their logs.

## SYNOPSIS

```
#include <qb/qblog.h>

void qb_log_from_external_source(
    const char   *function,  /* originating function name */
    const char   *filename,  /* originating filename */
    const char   *format,    /* format string */
    uint8_t       priority,  /* this takes syslog priorities. */
    uint32_t      lineno,    /* file line number */
    /*
     * this is a uint32_t that you can use with
     * qb_log_tags_stringify_fn_set() to "tag" a log message with a feature or sub-system then you can use
     * "%g" in the format specifer to print it out.
     */
    uint32_t      tags,
    ...
);
```

## PARAMS

**function** *originating function name*

**filename** *originating filename*

**format**   *format string*

**priority** *this takes syslog priorities.*

**lineno**   *file line number*

**tags**     *this is a uint32\_t that you can use with qb\_log\_tags\_stringify\_fn\_set()* to "tag" a log message with a feature or sub-system then you can use "%g" in the format specifer to print it out.

         *(null)*

## DESCRIPTION

## NOTE

*the performance of this will not impress you, as the filtering is done on each log message, not beforehand. So try doing basic pre-filtering.*

## SEE ALSO

[*qb\_log\_filter\_fn\_set*(3)](/qb_log_filter_fn_set/3.md), *qb\_log\_from\_external\_source\_va2*(3), [*qb\_log\_thread\_start*(3)](/qb_log_thread_start/3.md), [*qb\_log\_target\_user\_data\_get*(3)](/qb_log_target_user_data_get/3.md), [*qb\_log\_tags\_stringify\_fn\_set*(3)](/qb_log_tags_stringify_fn_set/3.md), [*qb\_log\_file\_reopen*(3)](/qb_log_file_reopen/3.md), [*qb\_log\_fini*(3)](/qb_log_fini/3.md), [*qb\_log\_callsites\_dump*(3)](/qb_log_callsites_dump/3.md), [*qb\_log\_ctl2*(3)](/qb_log_ctl2/3.md), [*qb\_log\_target\_user\_data\_set*(3)](/qb_log_target_user_data_set/3.md), [*qb\_log\_target\_format*(3)](/qb_log_target_format/3.md), [*qb\_log\_thread\_priority\_set*(3)](/qb_log_thread_priority_set/3.md), [*qb\_log\_facility2int*(3)](/qb_log_facility2int/3.md), [*qb\_log\_callsites\_register*(3)](/qb_log_callsites_register/3.md), [*qb\_log\_filter\_ctl2*(3)](/qb_log_filter_ctl2/3.md), [*qb\_log\_file\_close*(3)](/qb_log_file_close/3.md), [*qb\_log\_format\_set*(3)](/qb_log_format_set/3.md), [*qb\_log\_real\_*(3)](/qb_log_real_/3.md), [*qb\_log\_from\_external\_source\_va*(3)](/qb_log_from_external_source_va/3.md), [*qb\_log\_callsite\_get*(3)](/qb_log_callsite_get/3.md), [*qb\_log\_blackbox\_write\_to\_file*(3)](/qb_log_blackbox_write_to_file/3.md), [*qb\_log\_real\_va\_*(3)](/qb_log_real_va_/3.md), [*qb\_log\_blackbox\_print\_from\_file*(3)](/qb_log_blackbox_print_from_file/3.md), [*qb\_log\_facility2str*(3)](/qb_log_facility2str/3.md), *qb\_log\_callsite\_get2*(3), [*qb\_log\_ctl*(3)](/qb_log_ctl/3.md), [*qb\_log\_filter\_ctl*(3)](/qb_log_filter_ctl/3.md), [*qb\_log\_custom\_close*(3)](/qb_log_custom_close/3.md), [*qb\_log\_init*(3)](/qb_log_init/3.md), [*qb\_log\_file\_open*(3)](/qb_log_file_open/3.md), [*qb\_log\_custom\_open*(3)](/qb_log_custom_open/3.md)

## COPYRIGHT

Copyright (c) 2017 Red Hat, Inc.
