diff --git a/sf_notifier/salesforce/client.py b/sf_notifier/salesforce/client.py
index 84e68cb..319488d 100644
--- a/sf_notifier/salesforce/client.py
+++ b/sf_notifier/salesforce/client.py
@@ -83,7 +83,7 @@
                 env_var, config.get(setting_var))
 
             if field == 'domain':
-                if kwargs[field] is True:
+                if kwargs[field] in ['true', 'True', True]:
                     kwargs[field] = 'test'
                 else:
                     del kwargs[field]
@@ -99,7 +99,11 @@
     def _auth(self):
         kwargs = {'session': self.session}
         kwargs.update(self.config)
-        self.sf = Salesforce(**kwargs)
+        try:
+            self.sf = Salesforce(**kwargs)
+        except sf_exceptions.SalesforceAuthenticationFailed:
+            logger.error('Salesforce authentication failure.')
+            return
         logger.info('Salesforce authentication successful.')
 
     @staticmethod
@@ -137,7 +141,7 @@
             err_code = ex.content[0]['errorCode']
 
             if err_code == 'DUPLICATE_VALUE':
-                logger.info('Duplicate case: {}.'.format(msg))
+                logger.warning('Duplicate case: {}.'.format(msg))
                 case_id = msg.split()[-1]
                 self._registered_alerts[alert_id] = {'Id': case_id}
                 return 1, case_id
diff --git a/sf_notifier/server.py b/sf_notifier/server.py
index 182f55d..658061d 100644
--- a/sf_notifier/server.py
+++ b/sf_notifier/server.py
@@ -44,7 +44,9 @@
     try:
         data = json.loads(request.data)
     except ValueError:
-        return Response(json.dumps({'error': 'Invalid request data.'}),
+        msg = 'Invalid request data: {}.'.format(request.data)
+        app.logger.error(msg)
+        return Response(json.dumps({'error': msg}),
                         status=400,
                         mimetype='application/json')
 
@@ -65,7 +67,9 @@
             try:
                 cases.append(getattr(sf_cli, action)(*fields))
             except SalesforceMalformedRequest:
-                return Response(json.dumps({'error': 'Request failure.'}),
+                msg = 'Salesforce request failure.'
+                app.logger.error(msg)
+                return Response(json.dumps({'error': msg}),
                                 status=500,
                                 mimetype='application/json')
 
diff --git a/sf_notifier/settings/production.py b/sf_notifier/settings/production.py
new file mode 100644
index 0000000..b886190
--- /dev/null
+++ b/sf_notifier/settings/production.py
@@ -0,0 +1,38 @@
+LOGGING = {
+    'version': 1,
+    'formatters': {'default': {
+        'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
+    }},
+    'handlers': {
+        'wsgi': {
+            'class': 'logging.StreamHandler',
+            'stream': 'ext://flask.logging.wsgi_errors_stream',
+            'formatter': 'default'
+        },
+        'file': {
+            'class': 'logging.handlers.RotatingFileHandler',
+            'formatter': 'default',
+            'filename': '/var/log/sf-notifier/sfnotifier.log',
+            'mode': 'a',
+            'maxBytes': 10485760,
+            'backupCount': 5
+        }
+    },
+    'loggers': {
+        'sf_notifier.server': {
+            'level': 'WARN',
+            'handlers': ['file', 'wsgi']
+        },
+        'sf_notifier.salesforce.client': {
+            'level': 'WARN',
+            'handlers': ['file', 'wsgi']
+        }
+    }
+}
+
+SIMPLE_SETTINGS = {
+    'OVERRIDE_BY_ENV': True,
+    'CONFIGURE_LOGGING': True,
+}
+
+SF_CONFIG = {}
diff --git a/sf_notifier/vars/production b/sf_notifier/vars/production
new file mode 100644
index 0000000..85d050b
--- /dev/null
+++ b/sf_notifier/vars/production
@@ -0,0 +1,4 @@
+export FLASK_APP=sf_notifier/server.py
+export FLASK_ENV=production
+
+export SIMPLE_SETTINGS=sf_notifier.settings.production
