阿里云oss作为一个非常好用的一个存储服务, 一般作为一些静态资源的存储,如web开发中的css、js图片等或者是客户上传的附件、图片等。今天我们来实现一个非主流的用法:用他来记录日志.
这得益于阿里云oss的"追加上传文件"接口,这样我们不需要每次获取oss上的文件内容后再手动日志内容然后后上传文件。
php示例代码:
function ossLog($tag, $txt) {
$txt=date("[H:i:s] ").$txt;
try {
$ossClient = new OssClient(OSS_KEY, OSS_SEC, OSS_END_POINT);
} catch (OssException $e) {
return;
}
$object = "log/" . date("Y-m-d") . "/" . $tag . ".log";
try {
$meta = $ossClient->getObjectMeta(OSS_BUCKET, $object);
$pos = intval($meta['x-oss-next-append-position']);
} catch (OssException $e) {
$pos = 0;
}
try {
$position = $ossClient->appendObject(OSS_BUCKET, $object, $txt . "\n", $pos);
} catch (OssException $e) {
}
}
几个注意点:
首次上传文件时,偏移量(就是appendObject的第4个参数)设置为0就行
后续几次上件文件时,偏移量必须通过getObjectMeta来获取其中的"x-oss-next-append-position"而不是"Content-Length"
再额外写个脚本,每隔一段时间检测日志,业务系统如果有什么问题就可以早发现、早治疗
如果担心日志文件被其他人看到,可通过修改日志文件的路径为随机字符串的方式来解决
oss php sdk的引入请移步https://help.aliyun.com/document_detail/32099.html