blob: b8dbd1ce32916d41462d54d6bb851cc7c5d34be5 [file] [log] [blame]
Radek Krejci5fe60cc2015-09-01 17:14:39 +02001/**
2 * \file log.h
3 * \author Radek Krejci <rkrejci@cesnet.cz>
4 * \brief libnetconf2 logger
5 *
6 * Copyright (c) 2015 CESNET, z.s.p.o.
7 *
Radek Krejci9b81f5b2016-02-24 13:14:49 +01008 * This source code is licensed under BSD 3-Clause License (the "License").
9 * You may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
Michal Vaskoafd416b2016-02-25 14:51:46 +010011 *
Radek Krejci9b81f5b2016-02-24 13:14:49 +010012 * https://opensource.org/licenses/BSD-3-Clause
Radek Krejci5fe60cc2015-09-01 17:14:39 +020013 */
14
15#ifndef NC_LOG_H_
16#define NC_LOG_H_
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22/**
Radek Krejci6799a052017-05-19 14:23:23 +020023 * @addtogroup misc
24 * @{
25 */
26
27/**
Radek Krejci5fe60cc2015-09-01 17:14:39 +020028 * @brief Verbosity levels.
29 */
30typedef enum NC_VERB_LEVEL {
Michal Vasko086311b2016-01-08 09:53:11 +010031 NC_VERB_ERROR = 0, /**< Print only error messages. */
32 NC_VERB_WARNING = 1, /**< Print error and warning messages. */
33 NC_VERB_VERBOSE = 2, /**< Besides errors and warnings, print some other verbose messages. */
34 NC_VERB_DEBUG = 3 /**< Print all messages including some development debug messages. */
Radek Krejci5fe60cc2015-09-01 17:14:39 +020035} NC_VERB_LEVEL;
36
37/**
38 * @brief Set libnetconf's verbosity level.
Michal Vaskoa601f5c2015-12-08 14:33:03 +010039 *
40 * This level is set for libnetconf2 and alo libyang that is used internally. libyang
41 * verbose level can be set explicitly, but must be done so after calling this function.
Michal Vasko37fdad52017-03-02 11:40:22 +010042 * However, if debug verbosity is used, selecting displayed libyang debug message groups
43 * must be done explicitly.
Michal Vaskoa601f5c2015-12-08 14:33:03 +010044 *
Radek Krejci5fe60cc2015-09-01 17:14:39 +020045 * @param[in] level Enabled verbosity level (includes all the levels with higher priority).
46 */
47void nc_verbosity(NC_VERB_LEVEL level);
48
Michal Vaskob078fee2016-09-29 11:30:31 +020049#ifdef NC_ENABLED_SSH
50
51/**
52 * @brief Set libssh verbosity level.
53 *
54 * libssh verbosity is set separately because it defines more verbose levels than libnetconf2.
55 * Also, you need to set this for every thread unlike libnetconf verbosity.
56 *
57 * Values:
58 * - 0 - no logging,
59 * - 1 - rare conditions or warnings,
60 * - 2 - API-accessible entrypoints,
61 * - 3 - packet id and size,
62 * - 4 - functions entering and leaving.
63 *
64 * @param[in] level libssh verbosity level.
65 */
66void nc_libssh_thread_verbosity(int level);
67
68#endif
69
Michal Vasko206d3b12015-12-04 11:08:42 +010070/**
71 * @brief Set libnetconf's print callback.
Michal Vaskoa601f5c2015-12-08 14:33:03 +010072 *
73 * This callback is set for libnetconf2 and also libyang that is used internally. libyang
74 * callback can be set explicitly, but must be done so after calling this function.
75 *
76 * @param[in] clb Callback that is called for every message.
Michal Vasko206d3b12015-12-04 11:08:42 +010077 */
78void nc_set_print_clb(void (*clb)(NC_VERB_LEVEL, const char *));
79
Radek Krejci6799a052017-05-19 14:23:23 +020080/**@} Miscellaneous */
81
Radek Krejci5fe60cc2015-09-01 17:14:39 +020082#ifdef __cplusplus
83}
84#endif
85
86#endif /* NC_LOG_H_ */