[lxc-devel] [lxd/master] Pretty rendering for lxc monitor

stgraber on Github lxc-bot at linuxcontainers.org
Sat Feb 10 01:14:30 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180210/775a7262/attachment.bin>
-------------- next part --------------
From f591046a0622a19cd4aaf333510809502d4bed59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 9 Feb 2018 19:52:55 -0500
Subject: [PATCH 1/4] api: Include message format for events
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 shared/api/event.go | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 shared/api/event.go

diff --git a/shared/api/event.go b/shared/api/event.go
new file mode 100644
index 000000000..8d755a535
--- /dev/null
+++ b/shared/api/event.go
@@ -0,0 +1,20 @@
+package api
+
+import (
+	"encoding/json"
+	"time"
+)
+
+// Event represents an event entry (over websocket)
+type Event struct {
+	Type      string          `yaml:"type" json:"type"`
+	Timestamp time.Time       `yaml:"timestamp" json:"timestamp"`
+	Metadata  json.RawMessage `yaml:"metadata" json:"metadata"`
+}
+
+// EventLogging represents a logging type event entry (admin only)
+type EventLogging struct {
+	Message string            `yaml:"message" json:"message"`
+	Level   string            `yaml:"level" json:"level"`
+	Context map[string]string `yaml:"context" json:"context"`
+}

From 0401a14987dbe9a9cf330dcf6e38a60b6c5cccc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 9 Feb 2018 19:53:15 -0500
Subject: [PATCH 2/4] events: Use api message type
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/events.go | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lxd/events.go b/lxd/events.go
index f79b03fcc..dd6660327 100644
--- a/lxd/events.go
+++ b/lxd/events.go
@@ -13,6 +13,7 @@ import (
 	"github.com/pborman/uuid"
 
 	"github.com/lxc/lxd/shared"
+	"github.com/lxc/lxd/shared/api"
 	"github.com/lxc/lxd/shared/logger"
 )
 
@@ -36,10 +37,10 @@ func logContextMap(ctx []interface{}) map[string]string {
 }
 
 func (h eventsHandler) Log(r *log.Record) error {
-	eventSend("logging", shared.Jmap{
-		"message": r.Msg,
-		"level":   r.Lvl.String(),
-		"context": logContextMap(r.Ctx)})
+	eventSend("logging", api.EventLogging{
+		Message: r.Msg,
+		Level:   r.Lvl.String(),
+		Context: logContextMap(r.Ctx)})
 	return nil
 }
 

From ec8d0345ad903d63f934eac91fbd3f4c19c8a80a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 9 Feb 2018 20:00:13 -0500
Subject: [PATCH 3/4] lxc/monitor: Add pretty rendering of logs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/monitor.go | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 75 insertions(+), 3 deletions(-)

diff --git a/lxc/monitor.go b/lxc/monitor.go
index 41ec3ead3..318b42a92 100644
--- a/lxc/monitor.go
+++ b/lxc/monitor.go
@@ -1,13 +1,19 @@
 package main
 
 import (
+	"encoding/json"
 	"fmt"
+	"os"
 
 	"gopkg.in/yaml.v2"
 
 	"github.com/lxc/lxd/lxc/config"
+	"github.com/lxc/lxd/shared"
+	"github.com/lxc/lxd/shared/api"
 	"github.com/lxc/lxd/shared/gnuflag"
 	"github.com/lxc/lxd/shared/i18n"
+	"github.com/lxc/lxd/shared/log15"
+	"github.com/lxc/lxd/shared/logging"
 )
 
 type typeList []string
@@ -31,6 +37,8 @@ func (f *typeList) Set(value string) error {
 
 type monitorCmd struct {
 	typeArgs typeList
+	pretty   bool
+	logLevel string
 }
 
 func (c *monitorCmd) showByDefault() bool {
@@ -39,7 +47,7 @@ func (c *monitorCmd) showByDefault() bool {
 
 func (c *monitorCmd) usage() string {
 	return i18n.G(
-		`Usage: lxc monitor [<remote>:] [--type=TYPE...]
+		`Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]
 
 Monitor a local or remote LXD server.
 
@@ -49,11 +57,17 @@ Message types to listen for can be specified with --type.
 
 *Examples*
 lxc monitor --type=logging
-    Only show log message.`)
+    Only show log messages.
+
+lxc monitor --pretty --type=logging --loglevel=info
+    Show a pretty log of messages with info level or higher.
+`)
 }
 
 func (c *monitorCmd) flags() {
+	gnuflag.BoolVar(&c.pretty, "pretty", false, i18n.G("Pretty rendering"))
 	gnuflag.Var(&c.typeArgs, "type", i18n.G("Event type to listen for"))
+	gnuflag.StringVar(&c.logLevel, "loglevel", "", i18n.G("Minimum level for log messages"))
 }
 
 func (c *monitorCmd) run(conf *config.Config, args []string) error {
@@ -86,11 +100,69 @@ func (c *monitorCmd) run(conf *config.Config, args []string) error {
 		return err
 	}
 
+	logLvl := log15.LvlDebug
+	if c.logLevel != "" {
+		logLvl, err = log15.LvlFromString(c.logLevel)
+		if err != nil {
+			return err
+		}
+	}
+
 	handler := func(message interface{}) {
+		// Special handling for logging only output
+		if c.pretty && len(c.typeArgs) == 1 && shared.StringInSlice("logging", c.typeArgs) {
+			render, err := json.Marshal(&message)
+			if err != nil {
+				fmt.Printf("error: %s\n", err)
+				os.Exit(1)
+			}
+
+			event := api.Event{}
+			err = json.Unmarshal(render, &event)
+			if err != nil {
+				fmt.Printf("error: %s\n", err)
+				os.Exit(1)
+			}
+
+			logEntry := api.EventLogging{}
+			err = json.Unmarshal(event.Metadata, &logEntry)
+			if err != nil {
+				fmt.Printf("error: %s\n", err)
+				os.Exit(1)
+			}
+
+			lvl, err := log15.LvlFromString(logEntry.Level)
+			if err != nil {
+				fmt.Printf("error: %s\n", err)
+				os.Exit(1)
+			}
+
+			if lvl > logLvl {
+				return
+			}
+
+			ctx := []interface{}{}
+			for k, v := range logEntry.Context {
+				ctx = append(ctx, k)
+				ctx = append(ctx, v)
+			}
+
+			record := log15.Record{
+				Time: event.Timestamp,
+				Lvl:  lvl,
+				Msg:  logEntry.Message,
+				Ctx:  ctx,
+			}
+
+			format := logging.TerminalFormat()
+			fmt.Printf("%s", format.Format(&record))
+			return
+		}
+
 		render, err := yaml.Marshal(&message)
 		if err != nil {
 			fmt.Printf("error: %s\n", err)
-			return
+			os.Exit(1)
 		}
 
 		fmt.Printf("%s\n\n", render)

From ec1ef40954cfc58d3f1eac758558130db06a4811 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 9 Feb 2018 20:01:45 -0500
Subject: [PATCH 4/4] i18n: Update translation templates
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 po/de.po      | 43 +++++++++++++++++++++++++++----------------
 po/el.po      | 43 +++++++++++++++++++++++++++----------------
 po/es.po      | 43 +++++++++++++++++++++++++++----------------
 po/fi.po      | 43 +++++++++++++++++++++++++++----------------
 po/fr.po      | 43 +++++++++++++++++++++++++++----------------
 po/id.po      | 43 +++++++++++++++++++++++++++----------------
 po/it.po      | 43 +++++++++++++++++++++++++++----------------
 po/ja.po      | 44 ++++++++++++++++++++++++++++----------------
 po/lxd.pot    | 43 +++++++++++++++++++++++++++----------------
 po/nb_NO.po   | 43 +++++++++++++++++++++++++++----------------
 po/nl.po      | 43 +++++++++++++++++++++++++++----------------
 po/pl.po      | 43 +++++++++++++++++++++++++++----------------
 po/pt_BR.po   | 43 +++++++++++++++++++++++++++----------------
 po/ru.po      | 43 +++++++++++++++++++++++++++----------------
 po/sr.po      | 43 +++++++++++++++++++++++++++----------------
 po/sv.po      | 43 +++++++++++++++++++++++++++----------------
 po/tr.po      | 43 +++++++++++++++++++++++++++----------------
 po/zh.po      | 43 +++++++++++++++++++++++++++----------------
 po/zh_Hans.po | 43 +++++++++++++++++++++++++++----------------
 19 files changed, 514 insertions(+), 304 deletions(-)

diff --git a/po/de.po b/po/de.po
index 93fd53869..c709a11a1 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LXD\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: 2017-02-14 17:11+0000\n"
 "Last-Translator: Tim Rose <tim at netlope.de>\n"
 "Language-Team: German <https://hosted.weblate.org/projects/linux-containers/"
@@ -255,7 +255,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -379,7 +379,7 @@ msgstr ""
 "Optionen:\n"
 "\n"
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -577,7 +577,7 @@ msgstr "Flüchtiger Container"
 msgid "Error updating template file: %s"
 msgstr "Fehler beim hinzufügen des Alias %s\n"
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -628,7 +628,7 @@ msgstr "kann nicht zum selben Container Namen kopieren"
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -749,7 +749,7 @@ msgstr "Akzeptiere Zertifikat"
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, fuzzy, c-format
 msgid "Invalid path %s"
 msgstr "Ungültiges Ziel %s"
@@ -759,12 +759,12 @@ msgstr "Ungültiges Ziel %s"
 msgid "Invalid protocol: %s"
 msgstr "Ungültiges Ziel %s"
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr "Ungültige Quelle %s"
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr "Ungültiges Ziel %s"
@@ -823,6 +823,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr "Fehlende Zusammenfassung."
@@ -831,7 +835,7 @@ msgstr "Fehlende Zusammenfassung."
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 "Mehr als eine Datei herunterzuladen, aber das Ziel ist kein Verzeichnis"
@@ -1005,6 +1009,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1444,7 +1452,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, fuzzy, c-format
 msgid "Unknown file type '%s'"
 msgstr "Unbekannter Befehl %s für Abbild"
@@ -2013,9 +2021,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -2025,7 +2033,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2517,7 +2528,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2577,7 +2588,7 @@ msgstr "OK (y/n)? "
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/el.po b/po/el.po
index f013c8c44..9cb84cd09 100644
--- a/po/el.po
+++ b/po/el.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: 2017-02-14 08:00+0000\n"
 "Last-Translator: Simos Xenitellis <simos.65 at gmail.com>\n"
 "Language-Team: Greek <https://hosted.weblate.org/projects/linux-containers/"
@@ -151,7 +151,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -161,7 +161,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -269,7 +269,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -462,7 +462,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -512,7 +512,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -626,7 +626,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -636,12 +636,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -700,6 +700,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr "  Χρήση μνήμης:"
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -708,7 +712,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -873,6 +877,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1295,7 +1303,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1764,9 +1772,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1776,7 +1784,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2200,7 +2211,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2259,7 +2270,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/es.po b/po/es.po
index 5a1482767..b153feb82 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/fi.po b/po/fi.po
index b9ec42167..9b16ac222 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/fr.po b/po/fr.po
index 5a8e1e7db..03e1a9394 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LXD\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: 2018-01-02 10:52+0000\n"
 "Last-Translator: Bruno Perel <brunoperel at gmail.com>\n"
 "Language-Team: French <https://hosted.weblate.org/projects/linux-containers/"
@@ -247,7 +247,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr "%s (%d de plus)"
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr "%s n'est pas un répertoire"
@@ -257,7 +257,7 @@ msgstr "%s n'est pas un répertoire"
 msgid "%v (interrupt two more times to force)"
 msgstr "%v (interrompre encore deux fois pour forcer)"
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "'%s' n'est pas un format de fichier pris en charge."
@@ -367,7 +367,7 @@ msgstr "CRÉÉ À"
 msgid "Cached: %s"
 msgstr "Créé : %s"
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 #, fuzzy
 msgid "Can't pull a directory without --recursive"
 msgstr "impossible de récupérer un répertoire sans --recursive"
@@ -564,7 +564,7 @@ msgstr "Conteneur éphémère"
 msgid "Error updating template file: %s"
 msgstr "Import de l'image : %s"
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr "Type d'évènements à surveiller"
 
@@ -616,7 +616,7 @@ msgstr "Profil à appliquer au nouveau conteneur"
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -738,7 +738,7 @@ msgstr "Certificat invalide"
 msgid "Invalid configuration key"
 msgstr "Clé de configuration invalide"
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, fuzzy, c-format
 msgid "Invalid path %s"
 msgstr "Cible invalide %s"
@@ -748,12 +748,12 @@ msgstr "Cible invalide %s"
 msgid "Invalid protocol: %s"
 msgstr "Cible invalide %s"
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr "Source invalide %s"
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr "Cible invalide %s"
@@ -812,6 +812,10 @@ msgstr "Mémoire (pointe)"
 msgid "Memory usage:"
 msgstr "  Mémoire utilisée :"
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr "Résumé manquant."
@@ -820,7 +824,7 @@ msgstr "Résumé manquant."
 msgid "More than one device matches, specify the device name."
 msgstr "Plus d'un périphérique correspond, spécifier le nom du périphérique."
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 "Plusieurs fichiers à télécharger, mais la destination n'est pas un dossier"
@@ -990,6 +994,10 @@ msgstr "Appuyer sur Entrée pour ouvrir à nouveau l'éditeur"
 msgid "Press enter to start the editor again"
 msgstr "Appuyer sur Entrée pour lancer à nouveau l'éditeur"
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr "Afficher les informations de débogage"
@@ -1432,7 +1440,7 @@ msgstr "UTILISÉ PAR"
 msgid "Unable to find help2man."
 msgstr "Impossible de trouver help2man."
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -2185,10 +2193,10 @@ msgstr ""
 "\n"
 "Génère toutes les manpages LXD."
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 #, fuzzy
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -2198,7 +2206,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 "Superviser l'activité du serveur LXD.\n"
 "\n"
@@ -2804,7 +2815,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr "impossible de supprimer le serveur distant par défaut"
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr "impossible de spécifier uid/gid/mode en mode récursif"
 
@@ -2863,7 +2874,7 @@ msgstr "ok (y/n) ?"
 msgid "processing aliases failed %s\n"
 msgstr "l'analyse des alias a échoué %s\n"
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr "l'édition récursive ne fait aucun sens :("
 
diff --git a/po/id.po b/po/id.po
index 97ae5d1a2..ebd73835b 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/it.po b/po/it.po
index e247d6b5b..ec8a9b478 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: 2017-08-18 14:22+0000\n"
 "Last-Translator: Alberto Donato <alberto.donato at gmail.com>\n"
 "Language-Team: Italian <https://hosted.weblate.org/projects/linux-containers/"
@@ -173,7 +173,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr "%s (altri %d)"
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -183,7 +183,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr "%v (interrompi altre due volte per forzare)"
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "'%s' non è un tipo di file supportato."
@@ -291,7 +291,7 @@ msgstr "CREATO IL"
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr "Impossibile effettuare il pull di una directory senza --recursive"
 
@@ -483,7 +483,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -533,7 +533,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -648,7 +648,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -658,12 +658,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr "Proprietà errata: %s"
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -721,6 +721,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -729,7 +733,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -893,6 +897,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1315,7 +1323,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1784,9 +1792,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1796,7 +1804,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2220,7 +2231,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2279,7 +2290,7 @@ msgstr "ok (y/n)?"
 msgid "processing aliases failed %s\n"
 msgstr "errore di processamento degli alias %s\n"
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/ja.po b/po/ja.po
index ee8c9c923..c650d92a4 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LXD\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: 2018-01-02 10:52+0000\n"
 "Last-Translator: KATOH Yasufumi <karma at jazz.email.ne.jp>\n"
 "Language-Team: Japanese <https://hosted.weblate.org/projects/linux-"
@@ -151,7 +151,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr "%s (他%d個)"
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr "%s はディレクトリではありません"
@@ -162,7 +162,7 @@ msgid "%v (interrupt two more times to force)"
 msgstr ""
 "%v (強制的に中断したい場合はあと2回Ctrl-Cを入力/SIGINTを送出してください)"
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "'%s' はサポートされないタイプのファイルです。"
@@ -269,7 +269,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr "キャッシュ済: %s"
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 "ディレクトリを pull する場合は --recursive オプションを使用してください"
@@ -462,7 +462,7 @@ msgstr "Ephemeral コンテナ"
 msgid "Error updating template file: %s"
 msgstr "テンプレートファイル更新のエラー: %s"
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr "Listenするイベントタイプ"
 
@@ -512,7 +512,7 @@ msgstr "新しいコンテナ名が取得できません"
 msgid "Failed to remove alias %s"
 msgstr "エイリアス %s の削除に失敗しました"
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr "パス %s にアクセスできませんでした: %s"
@@ -627,7 +627,7 @@ msgstr "不正な証明書です"
 msgid "Invalid configuration key"
 msgstr "正しくない設定項目 (key) です"
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr "不正なパス %s"
@@ -637,12 +637,12 @@ msgstr "不正なパス %s"
 msgid "Invalid protocol: %s"
 msgstr "不正なプロトコル: %s"
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr "不正なソース %s"
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr "不正な送り先 %s"
@@ -700,6 +700,10 @@ msgstr "メモリ (ピーク)"
 msgid "Memory usage:"
 msgstr "メモリ消費量:"
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr "サマリーはありません。"
@@ -708,7 +712,7 @@ msgstr "サマリーはありません。"
 msgid "More than one device matches, specify the device name."
 msgstr "複数のデバイスとマッチします。デバイス名を指定してください。"
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 "ダウンロード対象のファイルが複数ありますが、コピー先がディレクトリではありま"
@@ -874,6 +878,10 @@ msgstr "再度エディタを開くためには Enter キーを押します"
 msgid "Press enter to start the editor again"
 msgstr "再度エディタを起動するには Enter キーを押します"
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr "デバッグ情報を表示します"
@@ -1309,7 +1317,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr "help2man が見つかりません。"
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr "未知のファイルタイプ '%s'"
@@ -2169,9 +2177,10 @@ msgstr ""
 "\n"
 "LXD の manpage をすべて生成します。"
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
+#, fuzzy
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -2181,7 +2190,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 "使い方: lxc monitor [<remote>:] [--type=TYPE...]\n"
 "\n"
@@ -2943,7 +2955,7 @@ msgstr "`lxc config profile` は廃止されました。`lxc profile` を使っ
 msgid "can't remove the default remote"
 msgstr "デフォルトのリモートは削除できません"
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr "再帰 (recursive) モードでは uid/gid/mode を指定できません"
 
@@ -3004,7 +3016,7 @@ msgstr "ok (y/n)?"
 msgid "processing aliases failed %s\n"
 msgstr "エイリアスの処理が失敗しました %s\n"
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr "再帰的な edit は意味がありません :("
 
diff --git a/po/lxd.pot b/po/lxd.pot
index 11b5c61fc..4526d0dce 100644
--- a/po/lxd.pot
+++ b/po/lxd.pot
@@ -7,7 +7,7 @@
 msgid   ""
 msgstr  "Project-Id-Version: lxd\n"
         "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-        "POT-Creation-Date: 2018-02-09 18:53-0500\n"
+        "POT-Creation-Date: 2018-02-09 20:13-0500\n"
         "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
         "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
         "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -141,7 +141,7 @@ msgstr  ""
 msgid   "%s (%d more)"
 msgstr  ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid   "%s is not a directory"
 msgstr  ""
@@ -151,7 +151,7 @@ msgstr  ""
 msgid   "%v (interrupt two more times to force)"
 msgstr  ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid   "'%s' isn't a supported file type."
 msgstr  ""
@@ -258,7 +258,7 @@ msgstr  ""
 msgid   "Cached: %s"
 msgstr  ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid   "Can't pull a directory without --recursive"
 msgstr  ""
 
@@ -448,7 +448,7 @@ msgstr  ""
 msgid   "Error updating template file: %s"
 msgstr  ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid   "Event type to listen for"
 msgstr  ""
 
@@ -498,7 +498,7 @@ msgstr  ""
 msgid   "Failed to remove alias %s"
 msgstr  ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid   "Failed to walk path for %s: %s"
 msgstr  ""
@@ -610,7 +610,7 @@ msgstr  ""
 msgid   "Invalid configuration key"
 msgstr  ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid   "Invalid path %s"
 msgstr  ""
@@ -620,12 +620,12 @@ msgstr  ""
 msgid   "Invalid protocol: %s"
 msgstr  ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid   "Invalid source %s"
 msgstr  ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid   "Invalid target %s"
 msgstr  ""
@@ -683,6 +683,10 @@ msgstr  ""
 msgid   "Memory usage:"
 msgstr  ""
 
+#: lxc/monitor.go:70
+msgid   "Minimum level for log messages"
+msgstr  ""
+
 #: lxc/utils.go:259
 msgid   "Missing summary."
 msgstr  ""
@@ -691,7 +695,7 @@ msgstr  ""
 msgid   "More than one device matches, specify the device name."
 msgstr  ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid   "More than one file to download, but target is not a directory"
 msgstr  ""
 
@@ -853,6 +857,10 @@ msgstr  ""
 msgid   "Press enter to start the editor again"
 msgstr  ""
 
+#: lxc/monitor.go:68
+msgid   "Pretty rendering"
+msgstr  ""
+
 #: lxc/help.go:73
 msgid   "Print debug information"
 msgstr  ""
@@ -1271,7 +1279,7 @@ msgstr  ""
 msgid   "Unable to find help2man."
 msgstr  ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid   "Unknown file type '%s'"
 msgstr  ""
@@ -1689,8 +1697,8 @@ msgid   "Usage: lxc manpage <directory>\n"
         "Generate all the LXD manpages."
 msgstr  ""
 
-#: lxc/monitor.go:41
-msgid   "Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+#: lxc/monitor.go:49
+msgid   "Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
         "\n"
         "Monitor a local or remote LXD server.\n"
         "\n"
@@ -1700,7 +1708,10 @@ msgid   "Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
         "\n"
         "*Examples*\n"
         "lxc monitor --type=logging\n"
-        "    Only show log message."
+        "    Only show log messages.\n"
+        "\n"
+        "lxc monitor --pretty --type=logging --loglevel=info\n"
+        "    Show a pretty log of messages with info level or higher.\n"
 msgstr  ""
 
 #: lxc/move.go:24
@@ -2084,7 +2095,7 @@ msgstr  ""
 msgid   "can't remove the default remote"
 msgstr  ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid   "can't supply uid/gid/mode in recursive mode"
 msgstr  ""
 
@@ -2143,7 +2154,7 @@ msgstr  ""
 msgid   "processing aliases failed %s\n"
 msgstr  ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid   "recursive edit doesn't make sense :("
 msgstr  ""
 
diff --git a/po/nb_NO.po b/po/nb_NO.po
index b310cfb71..b4745c380 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/nl.po b/po/nl.po
index 13845e784..eabc63812 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/pl.po b/po/pl.po
index 28f3cd869..50fd0ce2b 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 1fb5b2264..295fbdd9a 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/ru.po b/po/ru.po
index d7abf3614..3302e815d 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: 2017-09-05 16:48+0000\n"
 "Last-Translator: Ilya Yakimavets <ilya.yakimavets at backend.expert>\n"
 "Language-Team: Russian <https://hosted.weblate.org/projects/linux-containers/"
@@ -234,7 +234,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -244,7 +244,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -354,7 +354,7 @@ msgstr "СОЗДАН"
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -547,7 +547,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -597,7 +597,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -711,7 +711,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -721,12 +721,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -785,6 +785,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr " Использование памяти:"
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -793,7 +797,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -958,6 +962,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1380,7 +1388,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1857,9 +1865,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1869,7 +1877,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2297,7 +2308,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2356,7 +2367,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/sr.po b/po/sr.po
index 1e39a694a..e1dacd678 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/sv.po b/po/sv.po
index 084cfb430..5047313fc 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/tr.po b/po/tr.po
index 1878a571a..549944d30 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/zh.po b/po/zh.po
index 17250e117..98b109864 100644
--- a/po/zh.po
+++ b/po/zh.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 
diff --git a/po/zh_Hans.po b/po/zh_Hans.po
index 6b10e7ad5..3e0faa05c 100644
--- a/po/zh_Hans.po
+++ b/po/zh_Hans.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxd\n"
 "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2018-02-09 18:53-0500\n"
+"POT-Creation-Date: 2018-02-09 20:13-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -148,7 +148,7 @@ msgstr ""
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:195
+#: lxc/file.go:205
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:132
+#: lxc/file.go:142
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:491
+#: lxc/file.go:501
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgstr ""
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:56
+#: lxc/monitor.go:69
 msgid "Event type to listen for"
 msgstr ""
 
@@ -507,7 +507,7 @@ msgstr ""
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:127
+#: lxc/file.go:137
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
@@ -621,7 +621,7 @@ msgstr ""
 msgid "Invalid configuration key"
 msgstr ""
 
-#: lxc/file.go:536
+#: lxc/file.go:560
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
@@ -631,12 +631,12 @@ msgstr ""
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:463
+#: lxc/file.go:473
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:240
+#: lxc/file.go:250
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
@@ -694,6 +694,10 @@ msgstr ""
 msgid "Memory usage:"
 msgstr ""
 
+#: lxc/monitor.go:70
+msgid "Minimum level for log messages"
+msgstr ""
+
 #: lxc/utils.go:259
 msgid "Missing summary."
 msgstr ""
@@ -702,7 +706,7 @@ msgstr ""
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:450
+#: lxc/file.go:460
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
@@ -866,6 +870,10 @@ msgstr ""
 msgid "Press enter to start the editor again"
 msgstr ""
 
+#: lxc/monitor.go:68
+msgid "Pretty rendering"
+msgstr ""
+
 #: lxc/help.go:73
 msgid "Print debug information"
 msgstr ""
@@ -1288,7 +1296,7 @@ msgstr ""
 msgid "Unable to find help2man."
 msgstr ""
 
-#: lxc/file.go:114
+#: lxc/file.go:124
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
@@ -1757,9 +1765,9 @@ msgid ""
 "Generate all the LXD manpages."
 msgstr ""
 
-#: lxc/monitor.go:41
+#: lxc/monitor.go:49
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...]\n"
+"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
 "\n"
 "Monitor a local or remote LXD server.\n"
 "\n"
@@ -1769,7 +1777,10 @@ msgid ""
 "\n"
 "*Examples*\n"
 "lxc monitor --type=logging\n"
-"    Only show log message."
+"    Only show log messages.\n"
+"\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 msgstr ""
 
 #: lxc/move.go:24
@@ -2193,7 +2204,7 @@ msgstr ""
 msgid "can't remove the default remote"
 msgstr ""
 
-#: lxc/file.go:286
+#: lxc/file.go:296
 msgid "can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
@@ -2252,7 +2263,7 @@ msgstr ""
 msgid "processing aliases failed %s\n"
 msgstr ""
 
-#: lxc/file.go:564
+#: lxc/file.go:588
 msgid "recursive edit doesn't make sense :("
 msgstr ""
 


More information about the lxc-devel mailing list