php writelog,golang log日志,错误信息写入文件,创建目录,追加写入

目的: 错误日志写入到文件里面

日志文件夹是否存在,创建日志目录

日志文件是否存在,创建日志文件

文件权限

追加写入

package main

import (

"io"

"os"

"time"

)

const (

//LOGPATH LOGPATH/time.Now().Format(FORMAT)/*.log

LOGPATH = "log/"

//FORMAT .

FORMAT = "20060102"

//LineFeed 换行

LineFeed = "\r\n"

)

//以天为基准,存日志

var path = LOGPATH + time.Now().Format(FORMAT) + "/"

//WriteLog return error

func WriteLog(fileName, msg string) error {

if !IsExist(path) {

return CreateDir(path)

}

var (

err error

f *os.File

)

f, err = os.OpenFile(path+fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)

_, err = io.WriteString(f, LineFeed+msg)

defer f.Close()

return err

}

//CreateDir 文件夹创建

func CreateDir(path string) error {

err := os.MkdirAll(path, os.ModePerm)

if err != nil {

return err

}

os.Chmod(path, os.ModePerm)

return nil

}

//IsExist 判断文件夹/文件是否存在 存在返回 true

func IsExist(f string) bool {

_, err := os.Stat(f)

return err == nil || os.IsExist(err)

}

调用 直接 ==包名.WriteLog("1.log","这是个错误")==

==本文使用到的技术 剖析:==

1: os.Stat(name string) (fi FileInfo, err error)

//返回描述文件的FileInfo信息。如果出错,将是 *PathError类型。

2: os.IsExist(err error) bool

//返回一个布尔值,它指明err错误是否报告了一个文件或者目录已经存在。它被ErrExist和其它系统调用满足

3: os.MkdirAll(path string, perm FileMode) error

//创建一个新目录,该目录是利用路径(包括绝对路径和相对路径)

进行创建的,如果需要创建对应的父目录也一起进行创建

如果已经有了该目录,则不进行新的创建

当创建一个已经存在的目录时,不会报错.

4: os.Chmod(name string, mode FileMode) error

//更改文件的权限(读写执行,分为三类:all-group-owner)

5: os.OpenFile(name string, flag int, perm FileMode) (file *File, err error)

//指定文件权限和打开方式打开name文件或者create文件,其中flag标志如下:

O_RDONLY:只读模式(read-only)

O_WRONLY:只写模式(write-only)

O_RDWR:读写模式(read-write)

O_APPEND:追加模式(append)

O_CREATE:文件不存在就创建(create a new file if none exists.)

O_EXCL:与 O_CREATE 一起用,构成一个新建文件的功能,它要求文件必须不存在(used with O_CREATE, file must not exist)

O_SYNC:同步方式打开,即不使用缓存,直接写入硬盘

O_TRUNC:打开并清空文件

至于操作权限perm,除非创建文件时才需要指定,不需要创建新文件时可以将其设定为0.虽然go语言给perm权限设定了很多的常量,但是习惯上也可以直接使用数字,如0666(具体含义和Unix系统的一致).

6: io.WriteString(w Writer, s string) (n int, err error)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值