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

📄 ejssystemlog.c

📁 samba最新软件
💻 C
字号:
/* *	@file 	ejsSystemLog.c *	@brief 	System.Log class for the EJS Object Model *//********************************** Copyright *********************************//* *	Copyright (c) Mbedthis Software LLC, 2005-2006. All Rights Reserved. *//********************************** Includes **********************************/#include	"ejs.h"/*********************************** Usage ************************************//* * 	System.Log.setLog(path); *	System.Log.enable; *//******************************************************************************/static void logHandler(MPR_LOC_DEC(ctx, loc), int flags, int level, 	const char *msg){	MprApp	*app;	char	*buf;	int		len;	app = mprGetApp(ctx);	if (app->logFile == 0) {		return;	}	if (flags & MPR_LOG_SRC) {		len = mprAllocSprintf(MPR_LOC_PASS(ctx, loc), &buf, 0, 			"Log %d: %s\n", level, msg);	} else if (flags & MPR_ERROR_SRC) {		len = mprAllocSprintf(MPR_LOC_PASS(ctx, loc), &buf, 0, 			"Error: %s\n", msg);	} else if (flags & MPR_FATAL_SRC) {		len = mprAllocSprintf(MPR_LOC_PASS(ctx, loc), &buf, 0, 			"Fatal: %s\n", msg);			} else if (flags & MPR_ASSERT_SRC) {#if BLD_FEATURE_ALLOC_LEAK_TRACK		len = mprAllocSprintf(MPR_LOC_PASS(ctx, loc), &buf, 0, 			"Assertion %s, failed at %s\n",			msg, loc);#else		len = mprAllocSprintf(MPR_LOC_PASS(ctx, loc), &buf, 0, 			"Assertion %s, failed\n", msg);#endif	} else if (flags & MPR_RAW) {		/* OPT */		len = mprAllocSprintf(MPR_LOC_PASS(ctx, loc), &buf, 0, 			"%s", msg);	} else {		return;	}	mprPuts(app->logFile, buf, len);	mprFree(buf);}/******************************************************************************//************************************ Methods *********************************//******************************************************************************//* *	function int setLog(string path) */static int setLog(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv){	const char	*path;	MprFile		*file;	MprApp		*app;	if (argc != 1 || !ejsVarIsString(argv[0])) {		ejsArgError(ejs, "Usage: setLog(path)");		return -1;	}	app = mprGetApp(ejs);	/*	 *	Ignore errors if we can't create the log file.	 *	Use the app context so this will live longer than the interpreter	 *	MOB -- this leaks files.	 */	path = argv[0]->string;	file = mprOpen(app, path, O_CREAT | O_TRUNC | O_WRONLY, 0664);	if (file) {		app->logFile = file;		mprSetLogHandler(ejs, logHandler);	}	mprLog(ejs, 0, "Test log");	return 0;}/******************************************************************************/#if UNUSEDstatic int enableSetAccessor(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv){	if (argc != 1) {		ejsArgError(ejs, "Usage: set(value)");		return -1;	}	ejsSetProperty(ejs, thisObj, "_enabled", argv[0]);	return 0;}/******************************************************************************/static int enableGetAccessor(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv){	ejsSetReturnValue(ejs, ejsGetPropertyAsVar(ejs, thisObj, "_enabled"));	return 0;}#endif/******************************************************************************//******************************** Initialization ******************************//******************************************************************************/int ejsDefineLogClass(Ejs *ejs){	EjsVar			*logClass;	logClass =  ejsDefineClass(ejs, "System.Log", "Object", 0);	if (logClass == 0) {		return MPR_ERR_CANT_INITIALIZE;	}	ejsDefineCMethod(ejs, logClass, "setLog", setLog, EJS_NO_LOCAL);#if UNUSED	EjsProperty		*pp;	ejsDefineCAccessors(ejs, logClass, "enable", enableSetAccessor, 		enableGetAccessor, EJS_NO_LOCAL);	pp = ejsSetPropertyToBoolean(ejs, logClass, "_enabled", 0);	ejsMakePropertyEnumerable(pp, 0);#endif	return ejsObjHasErrors(logClass) ? MPR_ERR_CANT_INITIALIZE : 0;}/******************************************************************************//* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim:tw=78 * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -