• 配置
    • 日志配置
      • 自定义日志驱动

    配置

    常用的配置参数会比较少,因为除非你有特别的定制,否则基本上默认值就可以了:

    1. use EasyWeChat\Factory;
    2. $config = [
    3. 'app_id' => 'wx3cf0f39249eb0exx',
    4. 'secret' => 'f1c242f4f28f735d4687abb469072axx',
    5. // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
    6. 'response_type' => 'array',
    7. //...
    8. ];
    9. $app = Factory::officialAccount($config);

    下面是一个完整的配置样例:

    不建议你在配置的时候弄这么多,用到啥就配置啥才是最好的,因为大部分用默认值即可。

    1. <?php
    2. return [
    3. /**
    4. * 账号基本信息,请从微信公众平台/开放平台获取
    5. */
    6. 'app_id' => 'your-app-id', // AppID
    7. 'secret' => 'your-app-secret', // AppSecret
    8. 'token' => 'your-token', // Token
    9. 'aes_key' => '', // EncodingAESKey,兼容与安全模式下请一定要填写!!!
    10. /**
    11. * 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
    12. * 使用自定义类名时,构造函数将会接收一个 `EasyWeChat\Kernel\Http\Response` 实例
    13. */
    14. 'response_type' => 'array',
    15. /**
    16. * 日志配置
    17. *
    18. * level: 日志级别, 可选为:
    19. * debug/info/notice/warning/error/critical/alert/emergency
    20. * path:日志文件位置(绝对路径!!!),要求可写权限
    21. */
    22. 'log' => [
    23. 'default' => 'dev', // 默认使用的 channel,生产环境可以改为下面的 prod
    24. 'channels' => [
    25. // 测试环境
    26. 'dev' => [
    27. 'driver' => 'single',
    28. 'path' => '/tmp/easywechat.log',
    29. 'level' => 'debug',
    30. ],
    31. // 生产环境
    32. 'prod' => [
    33. 'driver' => 'daily',
    34. 'path' => '/tmp/easywechat.log',
    35. 'level' => 'info',
    36. ],
    37. ],
    38. ],
    39. /**
    40. * 接口请求相关配置,超时时间等,具体可用参数请参考:
    41. * http://docs.guzzlephp.org/en/stable/request-config.html
    42. *
    43. * - retries: 重试次数,默认 1,指定当 http 请求失败时重试的次数。
    44. * - retry_delay: 重试延迟间隔(单位:ms),默认 500
    45. * - log_template: 指定 HTTP 日志模板,请参考:https://github.com/guzzle/guzzle/blob/master/src/MessageFormatter.php
    46. */
    47. 'http' => [
    48. 'max_retries' => 1,
    49. 'retry_delay' => 500,
    50. 'timeout' => 5.0,
    51. // 'base_uri' => 'https://api.weixin.qq.com/', // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri
    52. ],
    53. /**
    54. * OAuth 配置
    55. *
    56. * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
    57. * callback:OAuth授权完成后的回调页地址
    58. */
    59. 'oauth' => [
    60. 'scopes' => ['snsapi_userinfo'],
    61. 'callback' => '/examples/oauth_callback.php',
    62. ],
    63. ];

    :heart: 安全模式下请一定要填写 aes_key

    日志配置

    你可以配置多个日志的 channel,每个 channel 里的 driver 对应不同的日志驱动,内置可用的 driver 如下表:

    名称 描述
    stack 复合型,可以包含下面多种驱动的混合模式
    single 基于 StreamHandler 的单一文件日志,参数有 pathlevel
    daily 基于 RotatingFileHandler 按日期生成日志文件,参数有 pathleveldays(默认 7 天)
    slack 基于 SlackWebhookHandler 的 Slack 组件,参数请参考源码:LogManager.php
    syslog 基于 SyslogHandler Monolog 驱动,参数有 facility 默认为 LOG_USERlevel
    errorlog 记录日志到系统错误日志,基于 ErrorLogHandler,参数有 type,默认为 ErrorLogHandler::OPERATING_SYSTEM

    自定义日志驱动

    由于日志使用的是 Monolog,所以,除了默认的文件式日志外,你可以自定义日志处理器:

    1. use Monolog\Logger;
    2. use Monolog\Handler\RotatingFileHandler;
    3. // 注册自定义日志
    4. $app->logger->extend('mylog', function($app, $config){
    5. return new Logger($this->parseChannel($config), [
    6. $this->prepareHandler(new RotatingFileHandler(
    7. $config['path'], $config['days'], $this->level($config)
    8. )),
    9. ]);
    10. });

    {info} 在你自定义的闭包函数中,可以使用 EasyWeChat\Kernel\LogLogManager 中的方法,具体请查看 SDK 源代码。

    配置文件中在 driver 部分即可使用你自定义的驱动了:

    1. 'log' => [
    2. 'default' => 'dev', // 默认使用的 channel,生产环境可以改为下面的 prod
    3. 'channels' => [
    4. // 测试环境
    5. 'dev' => [
    6. 'driver' => 'mylog',
    7. 'path' => '/tmp/easywechat.log',
    8. 'level' => 'debug',
    9. 'days' => 5,
    10. ],
    11. //...
    12. ],
    13. ],