Merge pull request #103 from phemmer/writer_interface

add io.Writer interface compatability
diff --git a/.travis.yml b/.travis.yml
index c3af3ce..2d8c086 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,9 +2,7 @@
 go:
   - 1.2
   - 1.3
+  - 1.4
   - tip
 install:
-  - go get github.com/stretchr/testify
-  - go get github.com/stvp/go-udp-testing
-  - go get github.com/tobi/airbrake-go
-  - go get github.com/getsentry/raven-go
+  - go get -t ./...
diff --git a/README.md b/README.md
index 32f6dee..8c01870 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 Logrus is a structured logger for Go (golang), completely API compatible with
 the standard library logger. [Godoc][godoc]. **Please note the Logrus API is not
-yet stable (pre 1.0), the core API is unlikely change much but please version
+yet stable (pre 1.0), the core API is unlikely to change much but please version
 control your Logrus to make sure you aren't fetching latest `master` on every
 build.**
 
@@ -33,7 +33,7 @@
 
 With the default `log.Formatter = new(logrus.TextFormatter)` when a TTY is not
 attached, the output is compatible with the
-[l2met](http://r.32k.io/l2met-introduction) format:
+[logfmt](http://godoc.org/github.com/kr/logfmt) format:
 
 ```text
 time="2014-04-20 15:36:23.830442383 -0400 EDT" level="info" msg="A group of walrus emerges from the ocean" animal="walrus" size=10
diff --git a/entry.go b/entry.go
index e164eec..17fe6f7 100644
--- a/entry.go
+++ b/entry.go
@@ -126,6 +126,10 @@
 	}
 }
 
+func (entry *Entry) Warning(args ...interface{}) {
+	entry.Warn(args...)
+}
+
 func (entry *Entry) Error(args ...interface{}) {
 	if entry.Logger.Level >= ErrorLevel {
 		entry.log(ErrorLevel, fmt.Sprint(args...))
diff --git a/logrus_test.go b/logrus_test.go
index 5302542..7f52c6f 100644
--- a/logrus_test.go
+++ b/logrus_test.go
@@ -223,7 +223,7 @@
 
 	err := json.Unmarshal(buffer.Bytes(), &fields)
 	assert.NoError(t, err, "should have decoded first message")
-	assert.Len(t, fields, 4, "should only have msg/time/level/context fields")
+	assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
 	assert.Equal(t, fields["msg"], "looks delicious")
 	assert.Equal(t, fields["context"], "eating raw fish")
 
@@ -233,7 +233,7 @@
 
 	err = json.Unmarshal(buffer.Bytes(), &fields)
 	assert.NoError(t, err, "should have decoded second message")
-	assert.Len(t, fields, 4, "should only have msg/time/level/context fields")
+	assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
 	assert.Equal(t, fields["msg"], "omg it is!")
 	assert.Equal(t, fields["context"], "eating raw fish")
 	assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry")
diff --git a/terminal_notwindows.go b/terminal_notwindows.go
index 276447b..80edd32 100644
--- a/terminal_notwindows.go
+++ b/terminal_notwindows.go
@@ -3,7 +3,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build linux,!appengine darwin freebsd
+// +build linux,!appengine darwin freebsd openbsd
 
 package logrus
 
diff --git a/terminal_openbsd.go b/terminal_openbsd.go
new file mode 100644
index 0000000..d238bfa
--- /dev/null
+++ b/terminal_openbsd.go
@@ -0,0 +1,8 @@
+
+package logrus
+
+import "syscall"
+
+const ioctlReadTermios = syscall.TIOCGETA
+
+type Termios syscall.Termios