diff --git a/config.go b/config.go
index 422216b..6099708 100644
--- a/config.go
+++ b/config.go
@@ -32,6 +32,7 @@ const (
 	MINUTES_UPDATE_HOURLY_D   = 29
 	MINUTES_UPDATE_DAILY_D    = 60*12 + 13
 	MINUTES_UPDATE_MONTHLY_D  = 60*24 + 17
+	MINUTES_UPDATE_LOGGER     = 5
 	TAGS_DISPLAY              = 50
 	SEARCH_ITEMS_PAGE         = 20
 	NEW_ITEMS_PAGE            = 50
@@ -42,6 +43,7 @@ const (
 	CSS_PATH      = "css/"
 	JS_PATH       = "js/"
 	IMG_PATH      = "img/"
+	LOGGER_CONFIG = "logger.xml"
 
 	IMG_WIDTH_BIG   = 300
 	IMG_WIDTH_SMALL = 60
diff --git a/logger.xml b/logger.xml
new file mode 100644
index 0000000..7b8ac3a
--- /dev/null
+++ b/logger.xml
@@ -0,0 +1,8 @@
+<seelog>
+	<outputs>
+		<console formatid="colored"/>
+	</outputs>
+	<formats>
+		<format id="colored"  format="%EscM(35)%Date %Time%EscM(39) [%EscM(32)%LEVEL%EscM(39)] %EscM(36)%RelFile:%Func%EscM(39) %Msg%n%EscM(0)"/>
+	</formats>
+</seelog>
diff --git a/tasker.go b/tasker.go
index 18dd977..1b0e6b3 100644
--- a/tasker.go
+++ b/tasker.go
@@ -7,6 +7,7 @@ import (
 )
 
 func InitTasks(db *DB) {
+	periodicTask(updateLogger, MINUTES_UPDATE_LOGGER*time.Minute)
 	periodicTask(db.UpdateTags, MINUTES_UPDATE_TAGS*time.Minute)
 	periodicTask(db.UpdateMostVisited, MINUTES_UPDATE_VISITED*time.Minute)
 	periodicTask(db.UpdateDownloadedBooks, MINUTES_UPDATE_DOWNLOADED*time.Minute)
diff --git a/trantor.go b/trantor.go
index 34a73cf..bcb8e1f 100644
--- a/trantor.go
+++ b/trantor.go
@@ -145,8 +145,18 @@ func notFound(h handler) {
 	loadTemplate(h.w, "404", data)
 }
 
+func updateLogger() error {
+	logger, err := log.LoggerFromConfigAsFile(LOGGER_CONFIG)
+	if err != nil {
+		return err
+	}
+
+	return log.ReplaceLogger(logger)
+}
+
 func main() {
 	defer log.Flush()
+	updateLogger()
 
 	db := initDB()
 	defer db.Close()