2009-09-04 01:11:53 +04:00
/*
* Copyright ( C ) 2004 - 2009 Red Hat , Inc . All rights reserved .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License v .2 .1 .
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 13:49:46 +03:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2009-09-04 01:11:53 +04:00
*/
2010-01-19 00:07:24 +03:00
# ifndef _LVM_CLOG_LOGGING_H
# define _LVM_CLOG_LOGGING_H
2009-09-04 01:11:53 +04:00
2010-01-19 00:07:24 +03:00
# define _GNU_SOURCE
# define _FILE_OFFSET_BITS 64
2010-06-15 15:00:44 +04:00
# include "configure.h"
2009-09-04 01:11:53 +04:00
# include <stdio.h>
2010-01-19 00:07:24 +03:00
# include <stdint.h>
2009-09-04 01:11:53 +04:00
# include <syslog.h>
/* SHORT_UUID - print last 8 chars of a string */
# define SHORT_UUID(x) (strlen(x) > 8) ? ((x) + (strlen(x) - 8)) : (x)
2010-01-19 00:07:24 +03:00
extern const char * __rq_types_off_by_one [ ] ;
2009-09-04 01:11:53 +04:00
# define RQ_TYPE(x) __rq_types_off_by_one[(x) - 1]
extern int log_tabbing ;
extern int log_is_open ;
extern int log_membership_change ;
extern int log_checkpoint ;
extern int log_resend_requests ;
# define LOG_OPEN(ident, option, facility) do { \
openlog ( ident , option , facility ) ; \
log_is_open = 1 ; \
} while ( 0 )
# define LOG_CLOSE(void) do { \
log_is_open = 0 ; \
closelog ( ) ; \
} while ( 0 )
# define LOG_OUTPUT(level, f, arg...) do { \
int __i ; \
char __buffer [ 16 ] ; \
FILE * fp = ( level > LOG_NOTICE ) ? stderr : stdout ; \
if ( log_is_open ) { \
for ( __i = 0 ; ( __i < log_tabbing ) & & ( __i < 15 ) ; __i + + ) \
__buffer [ __i ] = ' \t ' ; \
__buffer [ __i ] = ' \0 ' ; \
syslog ( level , " %s " f " \n " , __buffer , # # arg ) ; \
} else { \
for ( __i = 0 ; __i < log_tabbing ; __i + + ) \
fprintf ( fp , " \t " ) ; \
fprintf ( fp , f " \n " , # # arg ) ; \
} \
} while ( 0 )
# ifdef DEBUG
# define LOG_DBG(f, arg...) LOG_OUTPUT(LOG_DEBUG, f, ## arg)
# else /* DEBUG */
2014-01-08 05:37:07 +04:00
# define LOG_DBG(f, arg...) do {} while (0)
2009-09-04 01:11:53 +04:00
# endif /* DEBUG */
# define LOG_COND(__X, f, arg...) do {\
if ( __X ) { \
LOG_OUTPUT ( LOG_NOTICE , f , # # arg ) ; \
} \
} while ( 0 )
# define LOG_PRINT(f, arg...) LOG_OUTPUT(LOG_NOTICE, f, ## arg)
# define LOG_ERROR(f, arg...) LOG_OUTPUT(LOG_ERR, f, ## arg)
2010-01-19 00:07:24 +03:00
# endif /* _LVM_CLOG_LOGGING_H */