diff --git a/main/logger.c b/main/logger.c
index 8a577ed38dc880f4bde2e3dd38e0204dc664a65f..1be97fc87df2d372ebe034bea7016e50c67bdc6f 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -74,6 +74,7 @@ static int syslog_level_map[] = {
 #include "asterisk/threadstorage.h"
 #include "asterisk/strings.h"
 #include "asterisk/pbx.h"
+#include "asterisk/app.h"
 
 #if defined(__linux__) && !defined(__NR_gettid)
 #include <asm/unistd.h>
@@ -576,8 +577,8 @@ static int rotate_file(const char *filename)
 		char buf[512];
 		pbx_builtin_setvar_helper(c, "filename", filename);
 		pbx_substitute_variables_helper(c, exec_after_rotate, buf, sizeof(buf));
-		if (system(buf) < 0) {
-			ast_log(LOG_WARNING, "system() failed for '%s': %s\n", buf, strerror(errno));
+		if (ast_safe_system(buf) != -1) {
+			ast_log(LOG_WARNING, "error executing '%s'\n", buf);
 		}
 		ast_channel_free(c);
 	}