在 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 文件在主机根目录下创建

如何在 Hibernate 中为每个公司创建一个 customerNumber 生成器

如何在 Rails 4.2 中为多对多关联创建表单

在laravel中为每个页面上的布局填充数据

Laravel artisan 迁移多个数据库

如何使用 laravel 在引导模式中为每个 id 获取动态数据?