这个写个for 循环,加上一些随机变量就行吧
跟着学习就好
不是新写入了数据吗,新的日志
哈哈,看了最后一节课,看到了答案
不知道
2019/07/24 21:53:03 ParseInLocation fail: parsing time "[24/Jul/2019:21:53:03 +0000]" as "02/Jan/2006:15:04:05 +0000": cannot parse "[24/Jul/2019:21:53:03 +0000]" as "02" [24/Jul/2019:21:53:03 +0000]
ret[4]打印出来是这个 [24/Jul/2019:21:53:03 +0000]
因为parse没有循环接收,第二次的rc和wc就断开了,parse线程死掉
我记得是和系统内核有关的,
type
LogProcess struct {
type
LogProcess struct {
rc chan string
wc
chan string
read
*Reader
write *Write
}
read
*Reader
write *Write
把指针符去掉。
新的接收体实现Write方法即可
有新数据来的时候,会通过监听的通道将数据送入Process协程,处理完又通过另一通道将处理好的数据送入Write协程,各协程均准备就绪,通道处于监听状态
需要切换打1.8分支上。
使用指针可以避免数据的拷贝并且能直接修改原来的数据
已解决
当然不会,每读一行,指针就会往后移一行
file, e := os.OpenFile(r.path, os.O_WRONLY|os.O_APPEND, os.ModePerm)
改为:
file, e := os.Open(r.path)
if err != io.EOF 改为: if err == io.EOF
换了地址了
github.com/influxdata/influxdb1-client/v2
请下载这里
Iterm2
r初始化时的那个string就是文件的路径。
在那儿可以对文件名及其路径进行修改,但要在对应路径下放入相应的文件,否则在用os.open打开文件时会报错(文件不存在)
因为在读取文件时,一开始就移到了最后,所以要有新内容添加时才会有内容被打印出来
可以手动打开log文件添加内容,也可以用cmd中的echo命令行来写入内容
go语言鼓励使用channel通信共享内存 部分情况可以在写入之前加上一个<-channel 当读取结束后进行channel<- 同样可以实现锁的用途
遇到同样的问题
怎么解决的
https://github.com/itsmikej/imooc_logprocess/blob/master/full/log_process_full.go 这个完整版里解决了切割的问题