diff --git a/src/charts/ChartGUIController.java b/src/charts/ChartGUIController.java
index f3e7eaee2e594e4bf5efa3b662a9a0c8318f8874..d6550ffc945c2e2e282ef99f540b6e6dd0f6799c 100644
--- a/src/charts/ChartGUIController.java
+++ b/src/charts/ChartGUIController.java
@@ -19,6 +19,7 @@ import javafx.scene.image.Image;
 import javafx.scene.layout.AnchorPane;
 import javafx.scene.layout.VBox;
 import javafx.stage.Stage;
+import logger.Logger;
 import tools.AlertGenerator;
 
 @SuppressWarnings("rawtypes")
@@ -97,7 +98,7 @@ public class ChartGUIController
 						}
 						catch(Exception e)
 						{
-							e.printStackTrace();
+							Logger.error(e);
 							showErrorMessage();
 						}
 					}
@@ -125,7 +126,7 @@ public class ChartGUIController
 						}
 						catch(Exception e)
 						{
-							e.printStackTrace();
+							Logger.error(e);
 							showErrorMessage();
 						}
 					}
@@ -161,7 +162,7 @@ public class ChartGUIController
 								}
 								catch(Exception e)
 								{
-									e.printStackTrace();
+									Logger.error(e);
 									showErrorMessage();
 								}
 							}
@@ -181,7 +182,7 @@ public class ChartGUIController
 								}
 								catch(Exception e)
 								{
-									e.printStackTrace();
+									Logger.error(e);
 									showErrorMessage();
 								}
 							}
@@ -212,7 +213,7 @@ public class ChartGUIController
 								}
 								catch(Exception e)
 								{
-									e.printStackTrace();
+									Logger.error(e);
 									showErrorMessage();
 								}
 							}
@@ -230,7 +231,7 @@ public class ChartGUIController
 								}
 								catch(Exception e)
 								{
-									e.printStackTrace();
+									Logger.error(e);
 									showErrorMessage();
 								}
 							}
@@ -248,7 +249,7 @@ public class ChartGUIController
 									}
 									catch(Exception e)
 									{
-										e.printStackTrace();
+										Logger.error(e);
 										showErrorMessage();
 									}
 								}
@@ -266,7 +267,7 @@ public class ChartGUIController
 									}
 									catch(Exception e)
 									{
-										e.printStackTrace();
+										Logger.error(e);
 										showErrorMessage();
 									}
 								}
@@ -282,7 +283,7 @@ public class ChartGUIController
 									}
 									catch(Exception e)
 									{
-										e.printStackTrace();
+										Logger.error(e);
 										showErrorMessage();
 									}
 								}
@@ -300,7 +301,7 @@ public class ChartGUIController
 									}
 									catch(Exception e)
 									{
-										e.printStackTrace();
+										Logger.error(e);
 										showErrorMessage();
 									}
 								}
@@ -334,7 +335,7 @@ public class ChartGUIController
 									}								
 									catch(Exception e)
 									{
-										e.printStackTrace();
+										Logger.error(e);
 										showErrorMessage();
 									}
 								}
@@ -346,7 +347,7 @@ public class ChartGUIController
 									}
 									catch(Exception e)
 									{
-										e.printStackTrace();
+										Logger.error(e);
 										showErrorMessage();
 									}
 								}
@@ -366,7 +367,7 @@ public class ChartGUIController
 										}
 										catch(Exception e)
 										{
-											e.printStackTrace();
+											Logger.error(e);
 											showErrorMessage();										
 										}
 									}
@@ -378,7 +379,7 @@ public class ChartGUIController
 										}
 										catch(Exception e)
 										{
-											e.printStackTrace();
+											Logger.error(e);
 											showErrorMessage();										
 										}
 									}
@@ -397,7 +398,7 @@ public class ChartGUIController
 										catch(Exception e)
 										{
 											showErrorMessage();
-											e.printStackTrace();
+											Logger.error(e);
 										}
 									}
 									else
@@ -409,7 +410,7 @@ public class ChartGUIController
 										catch(Exception e)
 										{
 											showErrorMessage();
-											e.printStackTrace();
+											Logger.error(e);
 										}
 									}
 								}			
@@ -421,7 +422,7 @@ public class ChartGUIController
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			showErrorMessage();
 		}
 	}
diff --git a/src/core/Exporter.java b/src/core/Exporter.java
index 2b4a41efcb15a163d79b3e7b62170007fe0cc3a1..205bdf1ae42410b58cb4389ec8c0314b184bf76e 100644
--- a/src/core/Exporter.java
+++ b/src/core/Exporter.java
@@ -12,6 +12,7 @@ import javafx.application.Platform;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.image.Image;
 import javafx.stage.Stage;
+import logger.Logger;
 import tools.AlertGenerator;
 
 public class Exporter
@@ -60,7 +61,7 @@ public class Exporter
 		}
 		catch(Exception e)
 		{			
-			e.printStackTrace();
+			Logger.error(e);
 			Platform.runLater(()->{
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Exportieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false);
 			});
diff --git a/src/core/Importer.java b/src/core/Importer.java
index 0ee61709a67ad835c29b7c93a1cfb6da8b295cc9..c6a6152727ce1bca9b2480eb9ecf5dc346ea3847 100644
--- a/src/core/Importer.java
+++ b/src/core/Importer.java
@@ -14,6 +14,7 @@ import javafx.application.Platform;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.image.Image;
 import javafx.stage.Stage;
+import logger.Logger;
 import tools.AlertGenerator;
 
 public class Importer
@@ -58,7 +59,7 @@ public class Importer
 		}
 		catch(Exception e)
 		{			
-			e.printStackTrace();
+			Logger.error(e);
 			Platform.runLater(()->{
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Importieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false);
 			});
@@ -83,7 +84,7 @@ public class Importer
 		}
 		catch(Exception e)
 		{			
-			e.printStackTrace();
+			Logger.error(e);
 			Platform.runLater(()->{
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Importieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false);
 			});
@@ -126,7 +127,7 @@ public class Importer
 		}
 		catch(Exception e)
 		{			
-			e.printStackTrace();
+			Logger.error(e);
 			Platform.runLater(()->{
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Importieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false);
 			});
diff --git a/src/userInterface/InsertTimeController.java b/src/userInterface/InsertTimeController.java
index 99df4a3b3f5eb0c203cee1b1e02e9ab3441616d1..f1d0e4d48b0a93d1b0821a4eca5aa544f05e5549 100644
--- a/src/userInterface/InsertTimeController.java
+++ b/src/userInterface/InsertTimeController.java
@@ -28,6 +28,7 @@ import javafx.scene.control.Label;
 import javafx.scene.image.Image;
 import javafx.stage.Stage;
 import javafx.util.Callback;
+import logger.Logger;
 import tools.AlertGenerator;
 
 public class InsertTimeController 
@@ -199,7 +200,7 @@ public class InsertTimeController
 				}
 				catch(Exception e)
 				{	
-					e.printStackTrace();
+					Logger.error(e);
 					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Fehler beim Speichern des Eintrags.", icon, stage, null, false);									
 				}				
 				
@@ -424,7 +425,7 @@ public class InsertTimeController
 		}
 		catch(ParseException e)
 		{		
-			e.printStackTrace();
+			Logger.error(e);
 		}		
 		return false;				
 	}
diff --git a/src/userInterface/Main.java b/src/userInterface/Main.java
index ca2caa16bdbf0f3da32d44e2a438de82138f8e78..0026e30c2508ac642750e4de9e2b10102d2c859b 100644
--- a/src/userInterface/Main.java
+++ b/src/userInterface/Main.java
@@ -1,5 +1,9 @@
 package userInterface;
 
+import java.io.File;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
 import javafx.application.Application;
 import javafx.event.EventHandler;
 import javafx.fxml.FXMLLoader;
@@ -9,7 +13,10 @@ import javafx.scene.control.Alert.AlertType;
 import javafx.scene.image.Image;
 import javafx.stage.Stage;
 import javafx.stage.WindowEvent;
+import logger.FileOutputMode;
+import logger.Logger;
 import tools.AlertGenerator;
+import tools.PathUtils;
 
 
 public class Main extends Application
@@ -57,10 +64,26 @@ public class Main extends Application
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 	
+	@Override
+	public void init() throws Exception
+	{
+		ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+		
+		Parameters params = getParameters();
+		String logLevelParam = params.getNamed().get("loglevel");		
+		Logger.setLevel(logLevelParam);	
+		
+		File logFolder = new File(PathUtils.getOSindependentPath() + "/Deadlocker/" + bundle.getString("app.name"));			
+		PathUtils.checkFolder(logFolder);
+		Logger.enableFileOutput(logFolder, System.out, System.err, FileOutputMode.COMBINED);
+		
+		Logger.appInfo(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"));		
+	}
+	
 	public static void main(String[] args)
 	{
 		launch(args);
diff --git a/src/userInterface/UserInterfaceController.java b/src/userInterface/UserInterfaceController.java
index 435d354fbfbcced2e8dfe2909bf3281a3f276719..173ace1a01f0378a69d2307274d9bcbd35116543 100644
--- a/src/userInterface/UserInterfaceController.java
+++ b/src/userInterface/UserInterfaceController.java
@@ -57,6 +57,7 @@ import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.stage.WindowEvent;
 import javafx.util.Callback;
+import logger.Logger;
 import tools.AlertGenerator;
 import tools.ConvertTo;
 import tools.PathUtils;
@@ -270,7 +271,7 @@ public class UserInterfaceController
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Laden der Daten ist ein Fehler aufgetreten.", icon, stage, null, false);
 		}
 	}
@@ -295,7 +296,7 @@ public class UserInterfaceController
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			try
 			{
 				sql.createDB();
@@ -446,7 +447,7 @@ public class UserInterfaceController
 		}
 		catch(IOException e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 
@@ -485,7 +486,7 @@ public class UserInterfaceController
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Fehler beim Speichern des Eintrags.", icon, stage, null, false);
 		}
 
@@ -525,7 +526,7 @@ public class UserInterfaceController
 		}
 		catch(IOException e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 
@@ -628,7 +629,7 @@ public class UserInterfaceController
 			}
 			catch(IOException e)
 			{
-				e.printStackTrace();
+				Logger.error(e);
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Exportieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false);
 			}			
 			AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "", "Export erfolgreich abgeschlossen.", icon, stage, null, false);
@@ -735,7 +736,7 @@ public class UserInterfaceController
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Aktualisieren des Eintrags ist ein Fehler aufgetreten.", icon, stage, null, false);
 		}
 	}
@@ -749,7 +750,7 @@ public class UserInterfaceController
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Löschen des Eintrags ist ein Fehler aufgetreten.", icon, stage, null, false);
 		}
 	}
@@ -774,7 +775,7 @@ public class UserInterfaceController
 			}
 			catch(Exception e)
 			{
-				e.printStackTrace();
+				Logger.error(e);
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Löschen der Datenbank ist ein Fehler aufgetreten.", icon, stage, null, false);
 			}			
 		}