在 Laravel 4.2 中为每个公司创建目录(命名为 Today Date)并编写日志文件(命名为 CompanyName)
Posted
技术标签:
【中文标题】在 Laravel 4.2 中为每个公司创建目录(命名为 Today Date)并编写日志文件(命名为 CompanyName)【英文标题】:Creating Directory (named Today Date) and Writing Log Files(named CompanyName) for Each Company in Laravel 4.2 【发布时间】:2016-03-20 00:01:00 【问题描述】:我正在为我正在做的项目使用 Laravel 4.2。我想以与 Laravel 中提供的方法不同的方式记录文件(大文件或基于每日的文件)。
我想遵循的方法是
-
每天都会创建一个目录,而不是像 laravel 的 Log::useDailyFile() 方法提供的那样每天创建一个文件。
每个目录都包含每个公司的日志文件,日志文件是公司名称 + id。
我使用以下代码为每个公司创建了不同的日志文件:
if (Config::get('app.log') != 'daily')
Log::useFiles(storage_path().'/logs/laravel.log', Config::get('app.log_level'));
else
$companyId = isset($_COOKIE['companyId'])?$_COOKIE['companyId']:null;
$company = Company::where('id', $companyId)->get();
$companyName = $company[0]->name;
$companyName = str_replace(' ', '_', $companyName);
Config::get('app.log_max_files'), Config::get('app.log_level'));
Log::useDailyFiles(storage_path().'/logs/'.$companyName.'_'.$companyId.'-laravel.log', Config::get('app.log_max_files'), Config::get('app.log_level'));
但这些都存储在同一个文件夹名称“日志”中。
我的基本问题是如何每天创建一个文件夹,然后将每个公司的特定日期的日志文件保存在日期文件夹中。即今天是 14-12-2015,这应该创建一个名为“14-12-2015”的文件夹,并将其中的日志文件保存为“ComapnyA_01.log”和“Comapny_02.log”。
【问题讨论】:
【参考方案1】:您应该运行cron job 并根据您的意愿提及运行时间(24 小时内 1 次)。
cron 应该指向一个路径,它应该引导一个控制器来执行以下工作。
第 1 步:在当前日期创建目录
File::makeDirectory('/path/to/directory', 0775, true);
这是reference link
第二步:写日志
$companyName = 'Retrieve from your DB';
Log::info($companyName);
这里是official doc 参考它
【讨论】:
以上是关于在 Laravel 4.2 中为每个公司创建目录(命名为 Today Date)并编写日志文件(命名为 CompanyName)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 4.2 services.json 文件在主机根目录下创建