mirror of
https://github.com/zrepl/zrepl.git
synced 2025-06-20 09:47:50 +02:00
util/ReadWriteCloserLogger: handle unset readlog | writelog
This commit is contained in:
parent
3b1cac1ea2
commit
5f84d30972
26
util/io.go
26
util/io.go
@ -16,32 +16,54 @@ func NewReadWriteCloserLogger(rwc io.ReadWriteCloser, readlog, writelog string)
|
|||||||
RWC: rwc,
|
RWC: rwc,
|
||||||
}
|
}
|
||||||
flags := os.O_CREATE | os.O_WRONLY
|
flags := os.O_CREATE | os.O_WRONLY
|
||||||
|
if readlog != "" {
|
||||||
if l.ReadFile, err = os.OpenFile(readlog, flags, 0600); err != nil {
|
if l.ReadFile, err = os.OpenFile(readlog, flags, 0600); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if writelog != "" {
|
||||||
if l.WriteFile, err = os.OpenFile(writelog, flags, 0600); err != nil {
|
if l.WriteFile, err = os.OpenFile(writelog, flags, 0600); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ReadWriteCloserLogger) Read(buf []byte) (n int, err error) {
|
func (c *ReadWriteCloserLogger) Read(buf []byte) (n int, err error) {
|
||||||
n, err = c.RWC.Read(buf)
|
n, err = c.RWC.Read(buf)
|
||||||
|
if c.WriteFile != nil {
|
||||||
if _, writeErr := c.ReadFile.Write(buf[0:n]); writeErr != nil {
|
if _, writeErr := c.ReadFile.Write(buf[0:n]); writeErr != nil {
|
||||||
panic(writeErr)
|
panic(writeErr)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ReadWriteCloserLogger) Write(buf []byte) (n int, err error) {
|
func (c *ReadWriteCloserLogger) Write(buf []byte) (n int, err error) {
|
||||||
n, err = c.RWC.Write(buf)
|
n, err = c.RWC.Write(buf)
|
||||||
|
if c.ReadFile != nil {
|
||||||
if _, writeErr := c.WriteFile.Write(buf[0:n]); writeErr != nil {
|
if _, writeErr := c.WriteFile.Write(buf[0:n]); writeErr != nil {
|
||||||
panic(writeErr)
|
panic(writeErr)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (c *ReadWriteCloserLogger) Close() error {
|
func (c *ReadWriteCloserLogger) Close() (err error) {
|
||||||
return c.RWC.Close()
|
err = c.RWC.Close()
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if c.ReadFile != nil {
|
||||||
|
if err := c.ReadFile.Close(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if c.WriteFile != nil {
|
||||||
|
if err := c.WriteFile.Close(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
type ChainedReader struct {
|
type ChainedReader struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user