⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 log.c

📁 网络数据管理协议的开发
💻 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&current_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 + -