func NewAsync(writer iface.Writer, cap int) *Async {
	async := &Async{
		writer:    writer,
		chanData:  make(chan logData, cap),
		chanClose: make(chan struct{}),
	}
	go async.serve()
	return async
}
NewAsync creates a new Async that wraps the writer. The writer must NOT be nil.
The cap is the capacity of the internal channel of the Async and it must NOT
be negative.
package writer
import (
	"github.com/gxlog/gxlog/iface"
)
type logData struct {
	Bytes  []byte
	Record *iface.Record
}
type Async struct {
	writer    iface.Writer
	chanData  chan logData
	chanClose chan struct{}
}