diff --git a/ChangeLog b/ChangeLog
index 15de9893eceda98d469715613b225a3de82dac3e..774be8806646cb7f6f641cc407ea5ff85a1ac1eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,6 @@
 Changes in version 0.0.6 - UNRELEASED:
+ - Delay transport factory initialization till after logging has been
+   initialized.
 
 Changes in version 0.0.5 - 2015-04-15:
  - Go vet/fmt fixes, and misc. code cleanups.  Patches by mvdan.
diff --git a/obfs4proxy/obfs4proxy.go b/obfs4proxy/obfs4proxy.go
index 5f7f1711dc0c4fd42bf1693186db4c010cdd4404..a817583b265c99ca478f34e71986a7a036902842 100644
--- a/obfs4proxy/obfs4proxy.go
+++ b/obfs4proxy/obfs4proxy.go
@@ -347,6 +347,10 @@ func main() {
 	if err = log.Init(*enableLogging, path.Join(stateDir, obfs4proxyLogFile), *unsafeLogging); err != nil {
 		golog.Fatalf("[ERROR]: %s - failed to initialize logging", execName)
 	}
+	if err = transports.Init(); err != nil {
+		log.Errorf("%s - failed to initialize transports: %s", execName, err)
+		os.Exit(-1)
+	}
 
 	log.Noticef("%s - launched", getVersion())
 
diff --git a/transports/transports.go b/transports/transports.go
index ba4e09939e45a57dda4cf4d998c4b38eb14591e6..e35673bbe8eacec51c3f61f9b01b374da74d5515 100644
--- a/transports/transports.go
+++ b/transports/transports.go
@@ -41,7 +41,7 @@ import (
 )
 
 var transportMapLock sync.Mutex
-var transportMap map[string]base.Transport
+var transportMap map[string]base.Transport = make(map[string]base.Transport)
 
 // Register registers a transport protocol.
 func Register(transport base.Transport) error {
@@ -81,13 +81,12 @@ func Get(name string) base.Transport {
 	return t
 }
 
-func init() {
-	// Initialize the transport list.
-	transportMap = make(map[string]base.Transport)
-
-	// Register all the currently supported transports.
+// Init initializes all of the integrated transports.
+func Init() error {
 	Register(new(obfs2.Transport))
 	Register(new(obfs3.Transport))
 	Register(new(obfs4.Transport))
 	Register(new(scramblesuit.Transport))
+
+	return nil
 }