diff --git a/exported.go b/exported.go
index d087124..fd092fc 100644
--- a/exported.go
+++ b/exported.go
@@ -9,6 +9,10 @@
 	std = New()
 )
 
+func StandardLogger() *Logger {
+	return std
+}
+
 // SetOutput sets the standard logger output.
 func SetOutput(out io.Writer) {
 	std.mu.Lock()
diff --git a/input_writer.go b/input_writer.go
new file mode 100644
index 0000000..8809915
--- /dev/null
+++ b/input_writer.go
@@ -0,0 +1,30 @@
+package logrus
+
+import (
+	"bufio"
+	"io"
+	"runtime"
+)
+
+func (logger *Logger) InputWriter() (*io.PipeWriter) {
+	inputReader, inputWriter := io.Pipe()
+
+	go logger.inputWriterScanner(inputReader)
+	runtime.SetFinalizer(inputWriter, inputWriterFinalizer)
+
+	return inputWriter
+}
+
+func (logger *Logger) inputWriterScanner(inputReader *io.PipeReader) {
+	scanner := bufio.NewScanner(inputReader)
+	for scanner.Scan() {
+		logger.Print(scanner.Text())
+	}
+	if err := scanner.Err(); err != nil {
+		logger.Fatal(err)
+	}
+}
+
+func inputWriterFinalizer(inputWriter *io.PipeWriter) {
+	inputWriter.Close()
+}
