diff --git a/logger/logger.go b/logger/logger.go
index a1386b05..ca047cbc 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -65,6 +65,16 @@ func Infof(format string, args ...interface{}) {
 	addToBuffer("INFO", fmt.Sprintf(format, args...))
 }
 
+func Notice(args ...interface{}) {
+	logger.Notice(args...)
+	addToBuffer("NOTICE", fmt.Sprint(args...))
+}
+
+func Noticef(format string, args ...interface{}) {
+	logger.Noticef(format, args...)
+	addToBuffer("NOTICE", fmt.Sprintf(format, args...))
+}
+
 func Warning(args ...interface{}) {
 	logger.Warning(args...)
 	addToBuffer("WARNING", fmt.Sprint(args...))
diff --git a/xray/log_writer.go b/xray/log_writer.go
index 5fc6b3d1..53358ca2 100644
--- a/xray/log_writer.go
+++ b/xray/log_writer.go
@@ -31,7 +31,7 @@ func (lw *LogWriter) Write(m []byte) (n int, err error) {
 		// Find level in []
 		startIndex := strings.Index(messageBody, "[")
 		endIndex := strings.Index(messageBody, "]")
-		if startIndex != -1 && endIndex != -1 {
+		if startIndex != -1 && endIndex != -1 && startIndex < endIndex {
 			level := strings.TrimSpace(messageBody[startIndex+1 : endIndex])
 			msgBody := "XRAY: " + strings.TrimSpace(messageBody[endIndex+1:])