2010-08-17 05:33:07 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2010-01-20 21:18:52 +03:00
# ifndef foologhfoo
# define foologhfoo
2010-02-03 15:03:47 +03:00
/***
This file is part of systemd .
Copyright 2010 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
General Public License for more details .
You should have received a copy of the GNU General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
2010-01-20 21:18:52 +03:00
# include <syslog.h>
2010-06-18 00:52:55 +04:00
# include <stdbool.h>
2010-01-20 21:18:52 +03:00
# include "macro.h"
2010-05-15 19:25:08 +04:00
/* If set to SYSLOG and /dev/log can not be opened we fall back to
* KSMG . If KMSG fails , we fall back to CONSOLE */
2010-04-06 23:57:45 +04:00
typedef enum LogTarget {
LOG_TARGET_CONSOLE ,
LOG_TARGET_KMSG ,
2010-05-15 19:25:08 +04:00
LOG_TARGET_SYSLOG ,
LOG_TARGET_SYSLOG_OR_KMSG ,
2010-11-12 03:01:04 +03:00
LOG_TARGET_AUTO , /* console if stderr is tty, SYSLOG_OR_KMSG otherwise */
2010-06-09 17:37:37 +04:00
LOG_TARGET_NULL ,
2010-04-06 23:57:45 +04:00
_LOG_TARGET_MAX ,
_LOG_TARGET_INVALID = - 1
} LogTarget ;
void log_set_target ( LogTarget target ) ;
void log_set_max_level ( int level ) ;
2010-04-07 01:38:32 +04:00
int log_set_target_from_string ( const char * e ) ;
int log_set_max_level_from_string ( const char * e ) ;
2010-06-18 00:52:55 +04:00
void log_show_color ( bool b ) ;
void log_show_location ( bool b ) ;
int log_show_color_from_string ( const char * e ) ;
int log_show_location_from_string ( const char * e ) ;
2010-04-10 19:40:18 +04:00
LogTarget log_get_target ( void ) ;
int log_get_max_level ( void ) ;
2010-05-15 19:25:08 +04:00
int log_open ( void ) ;
2010-04-06 23:57:45 +04:00
void log_close_syslog ( void ) ;
2010-05-15 19:25:08 +04:00
void log_close_kmsg ( void ) ;
void log_close_console ( void ) ;
2010-04-06 23:57:45 +04:00
2010-04-07 01:38:32 +04:00
void log_parse_environment ( void ) ;
2010-05-15 19:25:08 +04:00
int log_meta (
2010-01-20 21:18:52 +03:00
int level ,
const char * file ,
int line ,
const char * func ,
2010-06-02 23:34:03 +04:00
const char * format , . . . ) _printf_attr_ ( 5 , 6 ) ;
2010-01-20 21:18:52 +03:00
2010-06-02 23:34:03 +04:00
_noreturn_ void log_assert (
2010-04-22 05:51:26 +04:00
const char * file ,
int line ,
const char * func ,
2010-06-02 23:34:03 +04:00
const char * format , . . . ) _printf_attr_ ( 4 , 5 ) ;
2010-04-22 05:51:26 +04:00
2010-06-04 21:45:53 +04:00
/* This modifies the buffer passed! */
int log_dump_internal (
int level ,
const char * file ,
int line ,
const char * func ,
char * buffer ) ;
2010-07-17 06:17:30 +04:00
# define log_full(level, ...) log_meta(level, __FILE__, __LINE__, __func__, __VA_ARGS__)
2010-01-20 21:18:52 +03:00
# define log_debug(...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__)
# define log_info(...) log_meta(LOG_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__)
# define log_notice(...) log_meta(LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__)
# define log_warning(...) log_meta(LOG_WARNING, __FILE__, __LINE__, __func__, __VA_ARGS__)
# define log_error(...) log_meta(LOG_ERR, __FILE__, __LINE__, __func__, __VA_ARGS__)
2010-06-04 21:45:53 +04:00
/* This modifies the buffer passed! */
# define log_dump(level, buffer) log_dump_internal(level, __FILE__, __LINE__, __func__, buffer)
2010-04-07 01:38:32 +04:00
const char * log_target_to_string ( LogTarget target ) ;
LogTarget log_target_from_string ( const char * s ) ;
2010-01-20 21:18:52 +03:00
# endif