diff --git a/src/sbbs3/logfile.cpp b/src/sbbs3/logfile.cpp
index e2c59e957c1c61aef85cf8e8665daaa2af652721..08dc8c901ac58c577633cd89ba2cde49f6f8c592 100644
--- a/src/sbbs3/logfile.cpp
+++ b/src/sbbs3/logfile.cpp
@@ -217,6 +217,21 @@ void sbbs_t::logline(int level, const char *code, const char *str)
 	fflush(logfile_fp);
 }
 
+/****************************************************************************/
+/* Writes formatted string on it's own line in node.log						*/
+/****************************************************************************/
+void sbbs_t::llprintf(int level, const char* code, const char *fmt, ...)
+{
+	va_list argptr;
+	char sbuf[1024];
+
+    va_start(argptr,fmt);
+    vsnprintf(sbuf, sizeof sbuf, fmt, argptr);
+	TERMINATE(sbuf);
+    va_end(argptr);
+    logline(level, code, sbuf);
+}
+
 /****************************************************************************/
 /* Writes a comma then 'ch' to log, tracking column.						*/
 /****************************************************************************/
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 6082e80fd67254732b54e9ad4338d6f58003545f..8ef135a397b42a04706bc1583fcf0d3f08ec2487 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1244,6 +1244,8 @@ public:
 	void	logch(char ch, bool comma);	/* Writes 'ch' to node log */
 	void	logline(const char *code,const char *str); /* Writes 'str' on it's own line in log (LOG_INFO level) */
 	void	logline(int level, const char *code,const char *str);
+	void	llprintf(int level, const char* code, const char *fmt, ...);
+
 	bool	logofflist(void);              /* List of users logon activity */
 	bool	errormsg_inside = false;
 	void	errormsg(int line, const char* function, const char *source, const char* action, const char *object