Symfony2:在登录不同文件时使用处理器

2023-12-01

我想将我的应用程序日志写入另一个文件,而不是 Symfony2 写入自己的日志和系统日志的文件。我知道我需要创建自己的服务,如下所示:

services:
    actionslogger:
        class: Symfony\Bridge\Monolog\Logger
        arguments: [app]
        calls:
             - [pushHandler, [@actionslogger_handler]]
    actionslogger_handler:
        class: Monolog\Handler\StreamHandler       
        arguments: [%kernel.logs_dir%/actions_%kernel.environment%.log, 200]

当我使用时效果很好$logger = $this->get('actionslogger');在我的应用程序中,所以没关系。 但我还想使用格式化程序和处理器来管理我的日志写入方式。为此,我使用以下配置:

services:
    actionslogger.formatter.session_request:
        class: Monolog\Formatter\LineFormatter
        arguments:
            - "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%%\n"

    actionslogger.processor.session_request:
        class: My\Bundle\LogProcessor
        arguments:  [ @session ]
        tags:
            - { name: actionslogger.processor, method: processRecord }

我可以使用此格式化程序和处理器与具有以下配置的 Symfony2 默认记录器:

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
            formatter: actionslogger.formatter.session_request

但如果我可以将格式化程序与我自己的记录器一起使用,我就无法使用处理器。这是我的配置:

services:
    actionslogger.formatter.session_request:
        class: Monolog\Formatter\LineFormatter
        arguments:
            - "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%%\n"

    actionslogger.processor.session_request:
        class: My\Bundle\LogProcessor
        arguments:  [ @session ]
        tags:
            - { name: actionslogger.processor, channel: app, method: processRecord, handler: @actionslogger_handler }

    actionslogger:
        class: Symfony\Bridge\Monolog\Logger
        arguments: [app]
        calls:
             - [pushHandler, [@actionslogger_handler]]
    actionslogger_handler:
        class: Monolog\Handler\StreamHandler       
        arguments: [%kernel.logs_dir%/actions_%kernel.environment%.log, 200]
        calls:
             #- [pushProcessor, [???]]
             - [setFormatter, [@actionslogger.formatter.session_request]]

处理器配置中的标签通道和处理程序似乎毫无用处。

我该怎么做才能使处理器与我的记录器一起工作? 我应该将什么传递给注释行中的 PushProcessor 方法(如果这可能是一个有效的选项)?

谢谢您的帮助。

注意:使用Symfony 2.0.0


重命名你的processRecord方法__invoke。 这使得 LogProcessor 实例可调用,并且您将能够将相应的服务作为处理器传递。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2:在登录不同文件时使用处理器 的相关文章

  • 如何在没有 Cloud Explorer 的情况下从 Azure 应用服务获取事件日志文件?

    我有 Azure 应用服务 在 Visual Studio 2019 中 我可以执行以下操作来从中获取事件日志 Open 云浏览器窗户 查看 gt 云资源管理器 使用我的 Azure 凭据登录 展开订阅 然后展开资源组 然后展开应用服务 展
  • 更改 Logger 实例的全局设置

    我在用着java util logging Logger http download oracle com javase 1 4 2 docs api java util logging Logger html作为我的应用程序的日志引擎 每
  • 如何使用来自数据库的值来定义 Twig 模板的全局变量?

    我想为 twig 定义一个全局变量 可以从任何模板访问它 我可以在 symfony 中创建一个全局变量config packages twig yaml 但我需要它是从数据库获取的值 在 twig 的文档中 它说使用此代码 twig new
  • Symfony 4.1 组件 - 依赖注入问题

    我正在用 PHP 重构旧应用程序 我正在尝试使用 Symfony 依赖注入组件将服务注入控制器 或其他服务 但我不知道如何实现这一点 因为 symphony 文档比框架组件更适合使用框架 我已经有了自己的内核 包含所有服务和控制器的容器 控
  • 从 Symfony2 中的服务重定向

    我有一项查找页面数据的服务 但如果找不到该数据 则应重定向到主页 对于我的一生 我不知道如何在 Sf2 中做到这一点 有很多不同的方法可以使用服务和路由器 但似乎都不起作用 namespace Acme SomeBundle Service
  • 对自定义 symfony 约束进行单元测试

    这应该非常简单 但今天下午它让我发疯 对自定义 symfony 验证器进行单元测试的正确方法是什么 我能找到的所有文章都与我的做法完全相同 class Foo extends Constraint public string message
  • 如何使用 keycloak 强制每个客户端登录(最佳实践?)

    我们目前正在实施 keycloak 但我们面临着一个问题 我们不确定解决它的最佳方法是什么 我们有不同的网络应用程序使用单点登录 并且运行良好 我们遇到的问题是 当我们在一个 Web 应用程序中使用 sso 登录 然后在另一个 Web 应用
  • 下拉 Ajax onchange SonataAdminBundle Symfony2 问题

    我正在尝试在 SonataAdminBundle 中实现 onchange 下拉菜单 我的实体就像 class BuilderHomePage var integer ORM Column name id type integer null
  • XcodeColors 在 XCode 5 中不起作用

    我尝试安装XcodeColors在 XCode 5 中 但不幸的是 它不能与我从 XCode 4 6 获得的旧插件一起使用 下一步 我检查了 github 网站 在那里我看到了以下拉取请求 提供了 XCode 5 的工作版本 https g
  • symfony docker 缓存文件的权限问题

    我有一个带有 docker compose 的 docker symfony 设置 它运行良好 除非我运行缓存 清除Web 服务器可以从控制台访问这些文件 我可以通过取消注释来规避权限问题掩码 0000 在控制台和 web app dev
  • 使用单个文件的 Python 日志记录(函数名、文件名、行号)

    我正在尝试了解应用程序的工作原理 为此 我将调试命令插入作为每个函数主体的第一行 目的是记录函数的名称以及向日志输出发送消息的行号 代码内 最后 由于这个应用程序由许多文件组成 我想创建一个日志文件 以便我可以更好地理解应用程序的控制流 这
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • 如何在 Symfony 4 中为测试环境设置数据库

    我对如何在 symfony 4 中为测试环境设置数据库感到困惑 我曾经在配置测试 ymlsymfony 3 及以下版本中的文件 最佳做法是什么 我应该重新创建一个学说 yaml文件输入配置 包 测试 该文档提到如何通过编辑 phpunit
  • Python 中上下文相关的日志级别

    我正在用 Python 制作一个 Web 应用程序框架的原型 主要是为了教育目的 但我一直坚持一个我一直想要的功能 每条路由的日志级别 此功能的目标是识别我们正在执行诊断的一些特定入口点 例如 我想跟踪呼叫者拨打电话时发生的情况POST s
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 有没有办法替代Android中的标准Log?

    有没有办法以某种方式拦截对 android 中标准 Log 的调用并执行其他操作 在桌面 Java 中 人们通常会得到一些记录器 因此有多种方法可以安装不同的日志处理程序 实现 但是 Android似乎对Log有静态调用 我找不到任何有关替
  • 如何使用多个数据库设置 symfony 3 学说迁移?

    我在验证和更新模式时努力让 symfony doctrine 排除数据库视图 我第一次尝试没有教条迁移 看到这个问题 https stackoverflow com questions 46775200 symfony 3 doctrine
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 日志中的“时间”字段到底表示什么?

    我在一台存在一些性能问题的服务器上研究了 IIS 7 5 中的 W3C 格式日志文件一段时间 在我看来 与MSDN 文档 http technet microsoft com en us library cc754702 28WS 10 2
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web

随机推荐

  • 黑莓列表字段每行的高度可变?

    我需要实现自定义 ListField 它的每一行都有高度变量 所选行的高度应与其他行不同 那么你需要照照镜子并回答 未记录的方法可以吗 如果答案是肯定的 请使用 ListField setRowHeight index height 这至少
  • 如何拆分以逗号分隔的字符串?

    我有一个以逗号分隔的字符串 例如 one two three 我可以从中创建一个数组吗 如果可以 如何创建 在VB NET中 you want to split this input string Dim s As String one t
  • 根据pod标签动态更新prometheus scrape配置

    我正在尝试增强监控 并希望扩大从 Kube 资产引入 Prometheus 的指标数量 我们已经有了一个独立的 Prom 实现 它有一个硬编码的配置文件来监视一些裸机服务器 并连接到 cadvisor 以获取通用 Pod 指标 我想要做的是
  • 交换排序和冒泡排序有什么区别?它们是一样的吗?

    我是一个算法小白 所以一直在研究排序算法 我知道冒泡排序与将一个值与它的邻居进行比较有关 如果左边的值大于右边的值 则进行交换 复杂度是O n 2 我遇到了交换排序 它似乎具有相同的特征和算法 我尝试过对交换排序进行研究 但我得到的结果是有
  • Ruby 代码没有得到结果[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 这就是我正在使用的 puts How old are you age gets if age 10 puts Yo end 我期待看到Yo如果我进入10 但不要 我还很新 有
  • 带有 Zend Framework 2 模块的 PHPUnit

    我正在努力让 PHPUnit 测试与 ZF2 一起使用 我的目录结构如下 project src config data module public vendor init autoloader php test bootstrap php
  • Rust 常量表达式取决于泛型参数

    我试图概括 Rust 中的一些代数运算 例如组 环 字段等 并且在尝试实现两个 集合 Vec 的叉积时遇到了这个问题 请注意 这是使用const generics在夜间工具链中 fn CrossProduct
  • Selenium 和非无头浏览器不断要求验证码

    我遇到了一个问题 我们的一个网站一直在云中的浏览器中以无头模式请求验证码 所以我将其切换为非无头模式 这样我就可以自己输入验证码 我想下次它会工作 也许是因为一些 cookie 已经被存储了 但即使我输入了几次验证码 它也没有存储 另外值得
  • 如何延迟“热门”任务,以便按照设定的顺序处理它们

    假设我有一组任务 var task1 DoThisAsync var task2 DoThatAsync var task3 DoOtherAsync var taskN 我正在寻找一种按顺序处理一组任务的方法 例如 由包含集合中的位置决定
  • 从简单的 json 文件创建并显示 Spark 数据帧

    在本地模式下运行 Spark 时 以下简单的 json DataFrame 测试工作正常 这是 Scala 代码片段 但我也成功地在 Java 和 Python 中实现了同样的功能 sparkContext addFile jsonPath
  • diff 工具 (vscode) 无法从 cmd 启动

    使用 Git 我想将分支 lisa 合并到我的主分支中 如下所示 git merge lisa 所以我打开了我的存储库 然后在 Windows 资源管理器中打开 git 以访问 config Git 配置文件 diff tool vscod
  • Java 解析 XML 文档给出“序言中不允许的内容”。错误[重复]

    这个问题在这里已经有答案了 我正在用 Java 编写一个程序 它接受自定义 XML 文件并解析它 我使用 XML 文件进行存储 我在 Eclipse 中收到以下错误 Fatal Error 1 1 Content is not allowe
  • 如何停止 d3 力图布局模拟?

    一旦您在 D3 中 d3 layout force start 进行力布局模拟 它就会继续伴随一个活动事件 我想设置 5 秒的超时 让图形强制布局模拟成形并停止 调用 stop 或 alpha 0 这可以停止 但一旦我拖动节点 模拟就会再次
  • 被用户控件上的自定义属性难住了

    我创建了一个 ASP NET 用户控件 当我明确提供自定义属性的值时 该值将传递给控件 但是 当我尝试使用数据源中的值时 该值不会传递给控件 用户控件位于 FormView 内 FormView 成功显示基础记录 我试图将 FormView
  • 悬停时显示隐藏文本 (CSS)

    我已经尝试了一段时间来显示一些文字 hover 有谁能帮我解释一下吗 I tried DivForHoverItem hover HiddenText display block 没有运气 可悲的是 我发现的每个例子中都有这个小片段 我也无
  • 带 GUI 的 Java 刽子手游戏,数字递增/递减问题

    代码的以下部分不起作用 因为每个单词的赢 输计数不断增加超过 1 有时我会收到字符串长度的空指针异常 此外 虽然玩家应该有 7 次尝试 没有 但有时他会尝试更多 有时会更少 字符串取自文本文件 Hangeng txt 整个游戏位于键盘按键侦
  • 请求超过 Fusion Tables 层中的最大 URL 长度

    我在 Google 地图上使用 Fusion Tables 图层 如果我添加一个大的 where 条件 其中超过 1000 个项目 则该图层不会加载
  • 可迭代拆包评估顺序[重复]

    这个问题在这里已经有答案了 我最近回答过一个问题用户遇到麻烦 因为他们将多维数组附加到另 一个数组 并且在我的回答中引起了我的注意 可以使用可迭代解包来填充x and y值并分配给board x y 在同一条线上 我原以为这会引发错误x a
  • 在 iOS 中,如何存储允许我与服务器通信的秘密“密钥”?

    我想存储一个密钥 abc123 我将在 REST API 请求的标头中使用该密钥 我的服务器将检查这个密钥 如果它与 abc123 匹配 则允许发出请求 我正在考虑一个简单的解决方案 例如 let secret abc123 但这会有任何缺
  • Symfony2:在登录不同文件时使用处理器

    我想将我的应用程序日志写入另一个文件 而不是 Symfony2 写入自己的日志和系统日志的文件 我知道我需要创建自己的服务 如下所示 services actionslogger class Symfony Bridge Monolog L