diff --git a/CHANGELOG.md b/CHANGELOG.md
index 56968bb..66d06eb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,9 @@
 - Binaries for macOS, Windows and Debian-based systems are now published with GitHub releases
 - The keys F16-F24 have been added as options for key bindings
 - Display notice about errors and warnings inside Alacritty
+- Log all messages to both stderr and a log file in the system's temporary directory
+- New configuration option `persistent_logging` and CLI flag `--persistent-logging`,
+    for keeping the log file after closing Alacritty
 
 ### Changed
 
diff --git a/alacritty-completions.bash b/alacritty-completions.bash
index f8ffc10..48c683e 100644
--- a/alacritty-completions.bash
+++ b/alacritty-completions.bash
@@ -11,7 +11,7 @@
     cur="${COMP_WORDS[COMP_CWORD]}"
     prev="${COMP_WORDS[COMP_CWORD-1]}"
     prevprev="${COMP_WORDS[COMP_CWORD-2]}"
-    opts="-h --help -V --version --live-config-reload --no-live-config-reload --print-events -q -qq -v -vv -vvv --ref-test -e --command --config-file -d --dimensions -t --title --working-directory"
+    opts="-h --help -V --version --live-config-reload --no-live-config-reload --persistent-logging --print-events -q -qq -v -vv -vvv --ref-test -e --command --config-file -d --dimensions -t --title --working-directory"
 
     # If `--command` or `-e` is used, stop completing
     for i in "${!COMP_WORDS[@]}"; do
diff --git a/alacritty-completions.fish b/alacritty-completions.fish
index 516c8ea..6ffaef4 100644
--- a/alacritty-completions.fish
+++ b/alacritty-completions.fish
@@ -16,6 +16,9 @@
   -l "no-live-config-reload" \
   -d "Disable automatic config reloading"
 complete -c alacritty \
+  -l "persistent-logging" \
+  -d "Keep the log file after quitting Alacritty"
+complete -c alacritty \
   -f \
   -l "config-file" \
   -d "Specify an alternative config file"
diff --git a/alacritty-completions.zsh b/alacritty-completions.zsh
index d2cc0ee..be7123a 100644
--- a/alacritty-completions.zsh
+++ b/alacritty-completions.zsh
@@ -9,6 +9,7 @@
         "(-V --version)"{-V,--version}"[Prints version information]" \
         "(--no-live-config-reload)--live-config-reload[Enable automatic config reloading]" \
         "(--live-config-reload)--no-live-config-reload[Disable automatic config reloading]" \
+        "(--persistent-logging)--persistent-logging[Keep the log file after quitting Alacritty]" \
         "--print-events[Print all events to stdout]" \
         {-q,-qq}"[Reduces the level of verbosity (min is -qq)]" \
         {-v,-vv,-vvv}"[Increases the level of verbosity (max is -vvv)]" \
diff --git a/alacritty.man b/alacritty.man
index 5baa5b8..983a898 100644
--- a/alacritty.man
+++ b/alacritty.man
@@ -19,6 +19,9 @@
 .TP
 \fB\-\-no\-live\-config\-reload\fR
 Disable automatic config reloading
+.TP
+\fB\-\-persistent\-logging\fR
+Keep the log file after quitting Alacritty
 .HP
 \fB\-\-print\-events\fR
 .TP
diff --git a/alacritty.yml b/alacritty.yml
index 29f6f54..43a5668 100644
--- a/alacritty.yml
+++ b/alacritty.yml
@@ -127,6 +127,9 @@
 # Display the time it takes to redraw each frame.
 render_timer: false
 
+# Keep the log file after quitting Alacritty.
+persistent_logging: false
+
 # If `true`, bold text is drawn using the bright color variants.
 draw_bold_text_with_bright_colors: true
 
diff --git a/alacritty_macos.yml b/alacritty_macos.yml
index 355f21c..eff759d 100644
--- a/alacritty_macos.yml
+++ b/alacritty_macos.yml
@@ -122,6 +122,9 @@
 # Display the time it takes to redraw each frame.
 render_timer: false
 
+# Keep the log file after quitting Alacritty.
+persistent_logging: false
+
 # If `true`, bold text is drawn using the bright color variants.
 draw_bold_text_with_bright_colors: true
 
diff --git a/alacritty_windows.yml b/alacritty_windows.yml
index 8be7ea5..1c3a05b 100644
--- a/alacritty_windows.yml
+++ b/alacritty_windows.yml
@@ -105,6 +105,9 @@
 # Display the time it takes to redraw each frame.
 render_timer: false
 
+# Keep the log file after quitting Alacritty.
+persistent_logging: false
+
 # Colors (Tomorrow Night Bright)
 colors:
   # Default colors
diff --git a/src/cli.rs b/src/cli.rs
index 68f3f6e..9972878 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -31,6 +31,7 @@
     pub command: Option<Shell<'static>>,
     pub working_dir: Option<PathBuf>,
     pub config: Option<PathBuf>,
+    pub persistent_logging: bool,
 }
 
 impl Default for Options {
@@ -46,6 +47,7 @@
             command: None,
             working_dir: None,
             config: None,
+            persistent_logging: false,
         }
     }
 }
@@ -71,6 +73,9 @@
                  .conflicts_with("live-config-reload"))
             .arg(Arg::with_name("print-events")
                 .long("print-events"))
+            .arg(Arg::with_name("persistent-logging")
+                .long("persistent-logging")
+                .help("Keep the log file after quitting Alacritty"))
             .arg(Arg::with_name("dimensions")
                 .long("dimensions")
                 .short("d")
@@ -129,6 +134,10 @@
             options.live_config_reload = Some(false);
         }
 
+        if matches.is_present("persistent-logging") {
+            options.persistent_logging = true;
+        }
+
         if let Some(mut dimensions) = matches.values_of("dimensions") {
             let width = dimensions.next().map(|w| w.parse().map(Column));
             let height = dimensions.next().map(|h| h.parse().map(Line));
diff --git a/src/config.rs b/src/config.rs
index 1837cdf..8e680eb 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -494,6 +494,10 @@
     #[serde(default, deserialize_with="failure_default")]
     cursor: Cursor,
 
+    /// Keep the log file after quitting
+    #[serde(default, deserialize_with="failure_default")]
+    persistent_logging: bool,
+
     // TODO: DEPRECATED
     #[serde(default, deserialize_with = "failure_default")]
     custom_cursor_colors: Option<bool>,
@@ -1662,6 +1666,12 @@
         self.scrolling.history = history;
     }
 
+    /// Keep the log file after quitting Alacritty
+    #[inline]
+    pub fn persistent_logging(&self) -> bool {
+        self.persistent_logging
+    }
+
     pub fn load_from<P: Into<PathBuf>>(path: P) -> Result<Config> {
         let path = path.into();
         let raw = Config::read_file(path.as_path())?;
diff --git a/src/display.rs b/src/display.rs
index b1e9bce..3e07775 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -411,8 +411,8 @@
             // Display errors and warnings
             if self.logger_proxy.errors() {
                 let msg = match self.logger_proxy.log_path() {
-                    Some(path) => format!(" ERROR: Full log at {} ", path),
-                    None => " ERROR: Full log in stderr ".into(),
+                    Some(path) => format!(" ERROR! See log at {} ", path),
+                    None => " ERROR! See log in stderr ".into(),
                 };
                 let color = Rgb {
                     r: 0xff,
@@ -424,8 +424,8 @@
                 });
             } else if self.logger_proxy.warnings() {
                 let msg = match self.logger_proxy.log_path() {
-                    Some(path) => format!(" WARNING: Full log at {} ", path),
-                    None => " WARNING: Full log in stderr ".into(),
+                    Some(path) => format!(" WARNING! See log at {} ", path),
+                    None => " WARNING! See log in stderr ".into(),
                 };
                 let color = Rgb {
                     r: 0xff,
diff --git a/src/logging.rs b/src/logging.rs
index bca8a7f..66cd8dd 100644
--- a/src/logging.rs
+++ b/src/logging.rs
@@ -22,7 +22,7 @@
 use time;
 
 use std::env;
-use std::fs::{File, OpenOptions};
+use std::fs::{self, File, OpenOptions};
 use std::io::{self, LineWriter, Stdout, Write};
 use std::path::PathBuf;
 use std::process;
@@ -78,6 +78,10 @@
         self.errors.store(false, Ordering::Relaxed);
         self.warnings.store(false, Ordering::Relaxed);
     }
+
+    pub fn delete_log(&mut self) {
+        self.logfile_proxy.delete_log();
+    }
 }
 
 struct Logger {
@@ -154,6 +158,17 @@
     path: String,
 }
 
+impl OnDemandLogFileProxy {
+    fn delete_log(&mut self) {
+        if self.created.load(Ordering::Relaxed) {
+            if fs::remove_file(&self.path).is_ok() {
+                let _ = writeln!(io::stdout(), "Deleted log file at {:?}", self.path);
+                self.created.store(false, Ordering::Relaxed);
+            }
+        }
+    }
+}
+
 struct OnDemandLogFile {
     file: Option<LineWriter<File>>,
     created: Arc<AtomicBool>,
diff --git a/src/main.rs b/src/main.rs
index 8035deb..3f2f561 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -85,8 +85,6 @@
     if let Err(err) = run(config, &options, logger_proxy) {
         die!("Alacritty encountered an unrecoverable error:\n\n\t{}\n", Red(err));
     }
-
-    info!("Goodbye.");
 }
 
 /// Load configuration
@@ -115,7 +113,7 @@
 fn run(
     mut config: Config,
     options: &cli::Options,
-    logger_proxy: LoggerProxy,
+    mut logger_proxy: LoggerProxy,
 ) -> Result<(), Box<Error>> {
     info!("Welcome to Alacritty.");
     if let Some(config_path) = config.path() {
@@ -138,7 +136,7 @@
     // This object contains all of the state about what's being displayed. It's
     // wrapped in a clonable mutex since both the I/O loop and display need to
     // access it.
-    let terminal = Term::new(&config, display.size().to_owned(), Some(logger_proxy));
+    let terminal = Term::new(&config, display.size().to_owned(), Some(logger_proxy.clone()));
     let terminal = Arc::new(FairMutex::new(terminal));
 
     // Find the window ID for setting $WINDOWID
@@ -261,5 +259,11 @@
     #[cfg(windows)]
     unsafe { FreeConsole(); }
 
+    info!("Goodbye.");
+
+    if !options.persistent_logging && !config.persistent_logging() {
+        logger_proxy.delete_log();
+    }
+
     Ok(())
 }
