📄 log.c
字号:
/* -*- Mode: C -*- * log.c * * Description : Informational, error, and debug message logging functions. * * Copyright (c) 1996,1997 PDC, Network Appliance. All Rights Reserved. * * $Id: log.c,v 1.5 1998/02/09 06:51:36 tim Exp $ */#if !defined(lint) && !defined(SABER)static char rcsId[] __attribute__ ((unused)) = "@(#) $Id: log.c,v 1.5 1998/02/09 06:51:36 tim Exp $";#endif#include <stdio.h>#include <stdarg.h>#include <unistd.h>#include "log.h"#if defined(_REENTRANT) || defined(_POSIX_PTHREAD)static char* SavedFileName;static u_long SavedLineNumber;static char* getFileName();static u_long getLineNumber();#elsestatic char* SavedFileName;static u_long SavedLineNumber;#define getFileName() SavedFileName #define getLineNumber() SavedLineNumber #endif/* * SetDebugLevel * Sets the current debug level. * A debug level contains a category mask and a focus value. * The focus is contained in the lower 4 bits. * The remaining bits comprise the category. * A debug message is output if the category bit is set in the * current debug level and the focus is greater than or equal to * the focus in the current debug level. * * Parameters: * level (input) - new debug level. * * Returns: * old debug level. */#if defined(_REENTRANT) || defined(_POSIX_PTHREAD)u_longSetDebugLevel(u_long level){ NOT IMPLEMENTED;}#elsestatic u_long DebugLevel = 0;u_longSetDebugLevel(u_long level){ u_long old = DebugLevel; DebugLevel = level; return(old);}#endif/* * GetDebugLevel * Returns the current debug level. * * Parameters: * None. * * Returns: * debug level. */#if defined(_REENTRANT) || defined(_POSIX_PTHREAD)u_longGetDebugLevel(){ NOT IMPLEMENTED; return();}#elseu_longGetDebugLevel(){ return(DebugLevel);}#endifvoidLog(char* format, ...){ va_list ap; if (format == 0) return; va_start(ap, format); vprintf(format, ap); va_end(ap);}voidLogDebug(u_long level, char* format, ...){ va_list ap; u_long current_level = GetDebugLevel(); if ((((level¤t_level)&0xfffffff0) == 0) || ((level&0x0f) > (current_level&0x0f))) return; va_start(ap, format); fprintf(stderr, "DEBUG: %ld %s:%lu ", (u_long)getpid(), getFileName(), getLineNumber()); vfprintf(stderr, format, ap); va_end(ap);}static char* PriorityStr[] ={ "EMERGENCY", "ALERT", "CRITICAL", "ERROR", "WARNING", "NOTICE", "INFO", "DEBUG",};voidLogError(u_long priority, char* format, ...){ va_list ap; if (priority > 7) priority = LOG_ERR; va_start(ap, format); fprintf(stderr, "%s: %s:%lu ", PriorityStr[priority], getFileName(), getLineNumber()); vfprintf(stderr, format, ap); va_end(ap);}#if defined(_REENTRANT) || defined(_POSIX_PTHREAD)/* * Thread safe implementation for storing the filename and * line number of the code location logging a debug or error message. */LogFuncPtr_tLogSaveFileAndLine(char *filename, u_long linenum, LogFuncPtr_t func){ NOT IMPLEMENTED; return(func);}static char*getFileName(){ NOT IMPLEMENTED; return();}static u_longgetLineNumber(){ NOT IMPLEMENTED; return();}#elseLogFuncPtr_tLogSaveFileAndLine(char *filename, u_long linenum, LogFuncPtr_t func){ SavedFileName = filename; SavedLineNumber = linenum; return(func);}#endif /* if defined(_REENTRANT) || defined(_POSIX_PTHREAD) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -