:language: c
:start-at: /** \brief Register a streaming logger
:end-at: );
+
+File Logging
+~~~~~~~~~~~~
+
+File loggers can be registered with the ``SCOutputRegisterFileLogger``
+function:
+
+.. literalinclude:: ../../../../../src/output-file.h
+ :language: c
+ :start-at: /** \brief Register a file logger
+ :end-at: );
-/* Copyright (C) 2007-2022 Open Information Security Foundation
+/* Copyright (C) 2007-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* it's perfectly valid that have multiple instances of the same
* log module (e.g. http.log) with different output ctx'. */
typedef struct OutputFileLogger_ {
- FileLogger LogFunc;
+ SCFileLogger LogFunc;
void *initdata;
struct OutputFileLogger_ *next;
const char *name;
static OutputFileLogger *list = NULL;
-int OutputRegisterFileLogger(LoggerId id, const char *name, FileLogger LogFunc, void *initdata,
+int SCOutputRegisterFileLogger(LoggerId id, const char *name, SCFileLogger LogFunc, void *initdata,
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
{
OutputFileLogger *op = SCCalloc(1, sizeof(*op));
-/* Copyright (C) 2007-2022 Open Information Security Foundation
+/* Copyright (C) 2007-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
const bool file_close, const bool file_trunc, uint8_t dir);
/** file logger function pointer type */
-typedef int (*FileLogger)(ThreadVars *, void *thread_data, const Packet *, const File *, void *tx,
+typedef int (*SCFileLogger)(ThreadVars *, void *thread_data, const Packet *, const File *, void *tx,
const uint64_t tx_id, uint8_t direction);
-int OutputRegisterFileLogger(LoggerId id, const char *name, FileLogger LogFunc, void *initdata,
+/** \brief Register a file logger.
+ *
+ * \param logger_id An ID used to distinguish this logger from others
+ * while profiling.
+ *
+ * \param name An informational name for this logger. Used only for
+ * debugging.
+ *
+ * \param LogFunc A function that will be called to log each file to be logged.
+ *
+ * \param initdata Initialization data that will pass to the
+ * ThreadInitFunc.
+ *
+ * \param ThreadInitFunc Thread initialization function.
+ *
+ * \param ThreadDeinitFunc Thread de-initialization function.
+ *
+ * \retval 0 on success, -1 on failure.
+ */
+int SCOutputRegisterFileLogger(LoggerId id, const char *name, SCFileLogger LogFunc, void *initdata,
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
+/** Internal function: private API. */
void OutputFileLoggerRegister(void);
+/** Internal function: private API. */
void OutputFileShutdown(void);
#endif /* SURICATA_OUTPUT_FILE_H */
-/* Copyright (C) 2007-2021 Open Information Security Foundation
+/* Copyright (C) 2007-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* \retval Returns 0 on success, -1 on failure.
*/
void OutputRegisterFileSubModule(LoggerId id, const char *parent_name, const char *name,
- const char *conf_name, OutputInitSubFunc InitFunc, FileLogger FileLogFunc,
+ const char *conf_name, OutputInitSubFunc InitFunc, SCFileLogger FileLogFunc,
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
{
if (unlikely(FileLogFunc == NULL)) {
-/* Copyright (C) 2007-2022 Open Information Security Foundation
+/* Copyright (C) 2007-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
PacketLogCondition PacketConditionFunc;
TxLogger TxLogFunc;
TxLoggerCondition TxLogCondition;
- FileLogger FileLogFunc;
+ SCFileLogger FileLogFunc;
FiledataLogger FiledataLogFunc;
FlowLogger FlowLogFunc;
SCStreamingLogger StreamingLogFunc;
ThreadDeinitFunc ThreadDeinit);
void OutputRegisterFileSubModule(LoggerId id, const char *parent_name, const char *name,
- const char *conf_name, OutputInitSubFunc InitFunc, FileLogger FileLogFunc,
+ const char *conf_name, OutputInitSubFunc InitFunc, SCFileLogger FileLogFunc,
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
void OutputRegisterFiledataModule(LoggerId id, const char *name, const char *conf_name,
filedata_logger_count++;
} else if (module->FileLogFunc) {
SCLogDebug("%s is a file logger", module->name);
- OutputRegisterFileLogger(module->logger_id, module->name, module->FileLogFunc, output_ctx,
+ SCOutputRegisterFileLogger(module->logger_id, module->name, module->FileLogFunc, output_ctx,
module->ThreadInit, module->ThreadDeinit);
file_logger_count++;
} else if (module->StreamingLogFunc) {