plugins/mod_posix.lua
changeset 1033 4a9f0d482028
parent 1032 409f22d0430f
child 1042 a3d77353c18a
child 1045 06887b889b17
equal deleted inserted replaced
1032:409f22d0430f 1033:4a9f0d482028
    38 			pidfile_written = pidfile;
    38 			pidfile_written = pidfile;
    39 		end
    39 		end
    40 	end
    40 	end
    41 end
    41 end
    42 
    42 
    43 local logfilename = config_get("*", "core", "log");
    43 local syslog_opened 
    44 if logfilename == "syslog" then
    44 function syslog_sink_maker(config)
    45 	pposix.syslog_open("prosody");
    45 	if not syslog_opened then
    46 	pposix.syslog_setminlevel(config.get("*", "core", "minimum_log_level") or "info");
    46 		print("OPENING SYSLOOOOOOOOOG");
    47 		local syslog, format = pposix.syslog_log, string.format;
    47 		pposix.syslog_open("prosody");
    48 		logwriter = function (name, level, message, ...)
    48 		syslog_opened = true;
    49 					if ... then 
       
    50 						syslog(level, format(message, ...));
       
    51 					else
       
    52 						syslog(level, message);
       
    53 					end
       
    54 				end;			
       
    55 elseif logfilename then
       
    56 	local logfile = io.open(logfilename, "a+");
       
    57 	if logfile then
       
    58 		local write, format, flush = logfile.write, string.format, logfile.flush;
       
    59 		logwriter = function (name, level, message, ...)
       
    60 					if ... then 
       
    61 						write(logfile, name, "\t", level, "\t", format(message, ...), "\n");
       
    62 					else
       
    63 						write(logfile, name, "\t" , level, "\t", message, "\n");
       
    64 					end
       
    65 					flush(logfile);
       
    66 				end;
       
    67 	end
    49 	end
    68 else
    50 	local syslog, format = pposix.syslog_log, string.format;
    69 	log("debug", "No logging specified, will continue with default");
    51 	return function (name, level, message, ...)
       
    52 			if ... then
       
    53 				syslog(level, format(message, ...));
       
    54 			else
       
    55 				syslog(level, message);
       
    56 			end
       
    57 		end;
    70 end
    58 end
    71 
    59 require "core.loggingmanager".register_sink_type("syslog", syslog_sink_maker);
    72 if logwriter then
       
    73 	local ok, ret = logger_set(logwriter);
       
    74 	if not ok then
       
    75 		log("error", "Couldn't set new log output: %s", ret);
       
    76 	end
       
    77 end
       
    78 
    60 
    79 if not config_get("*", "core", "no_daemonize") then
    61 if not config_get("*", "core", "no_daemonize") then
    80 	local function daemonize_server()
    62 	local function daemonize_server()
    81 		local logwriter;
       
    82 		
       
    83 		
       
    84 		local ok, ret = pposix.daemonize();
    63 		local ok, ret = pposix.daemonize();
    85 		if not ok then
    64 		if not ok then
    86 			log("error", "Failed to daemonize: %s", ret);
    65 			log("error", "Failed to daemonize: %s", ret);
    87 		elseif ret and ret > 0 then
    66 		elseif ret and ret > 0 then
    88 			os.exit(0);
    67 			os.exit(0);