如何编写写入 /var/log/myapp 目录的 C/C++ 应用程序?

2024-05-01

背景

在 Linux 系统上,应用程序日志 https://help.ubuntu.com/community/LinuxLogFiles#Application_Logs存在于子目录中/var/log,其所有者为root/root并且在我的系统上拥有 755 权限。例如,我看到/var/log/mysql and /var/log/samba.

Question

如果我想要一个myapp能够写入/var/log/myapp, 是什么规范方式在 C/C++ 中完成这个?

Thoughts

我必须做一些疯狂的事情吗setuid root如果我不想sudo a_setup_script.sh?请注意,我知道syslog例程,但它们不足以满足我的需求(我需要记录更多信息,分为不同的文件,因此需要子目录)。

我是否需要研究 Ubuntu 打包(设置目录)和直接文件 IO 到子目录(通过myapp)?

我想尽可能地遵循标准。

Addendum

我忘了提及,myapp实际上是一个守护进程(一个监听客户端的服务器),所以拥有一个也不错myapp_user它实际上运行/启动该进程。

ANSWER

对于 Ubuntu,最好的解决方案似乎是rsyslog,一个强大的、现代的替代品syslog。它将根据需要生成文件/目录,它具有内置语言,可以灵活路由syslog条目,它使用简单、古老的syslogC/C++ 级别的 API。要存储路由信息,您可以在 C/C++ 中定义自己的文本消息编码,并结合适当的rsyslog.conf来处理解码。


不不不不。没有适合这种东西的衣服。这些日志由称为“syslog”的进程管理,并且有一个 API 可以将消息发送到此记录器:

   void openlog(const char *ident, int option, int facility);
   void syslog(int priority, const char *format, ...);
   void closelog(void);

或者您可以在命令行上输入“man syslog”并获取所有信息:-)

更新:您将需要编辑 syslog 的配置文件的权限,以将消息发送到单独的日志文件,否则它们将最终位于默认位置(可能是 /var/log/syslog)。

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

如何编写写入 /var/log/myapp 目录的 C/C++ 应用程序? 的相关文章

  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • glDrawElements 只绘制半个四边形

    这是我的功能 void Object draw2 if mIsInitialised return Tell OpenGL about our vertex and normal data glEnableClientState GL VE
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • C# ToString("MM/dd/yy") 删除前导 0 [重复]

    这个问题在这里已经有答案了 可能的重复 格式化 NET DateTime Day 不带前导零 https stackoverflow com questions 988353 format net datetime day with no
  • C# - 为什么我需要初始化 [Out] 参数

    我有几个从本机 dll 导入的方法 使用以下语法 internal static class DllClass DllImport Example dll EntryPoint ExampleFunction public static e
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 局部静态变量初始化是线程安全的[重复]

    这个问题在这里已经有答案了 假设我有一个包含三个静态函数的类 如下所示 include
  • C++0x 中的新 unicode 字符

    我正在构建一个 API 它允许我获取各种编码的字符串 包括 utf8 utf16 utf32 和 wchar t 根据操作系统 可能是 utf32 或 utf16 新的 C 标准引入了新类型char16 t and char32 t没有这么
  • 最后从同一类中的其他构造函数调用构造函数

    我在这里读到可以调用另一个构造函数从同一类中的另一个构造函数调用构造函数 https stackoverflow com questions 829870 calling constructor from other constructor

随机推荐

  • 分享图片在 Viber 和 Facebook 中不起作用

    我使用下面的代码来共享图像 但不幸的是它仅适用于Line 不是为了Facebook and Viber Code Intent share new Intent android content Intent ACTION SEND shar
  • 从类详细信息 Visual Studio 导出

    我发现在 Visual Studio 中我们可以通过创建类图 添加类和打开类详细信息轻松地将摘要添加到代码中 现在我想知道是否可以将其导出到 Excel 文件中 检查 MD对此答案的评论https stackoverflow com a 3
  • 带汇总总计和小计

    我有一个脚本可以生成几乎已经存在的结果集 我正在尝试获取小计和总计 我在年份栏中得到了小计 在最后得到了总计 我的目标是让最终结果显示 总计 而不是小计 请注意 由于汇总函数 我的最后一行 位置 也返回为空 SELECT YEAR COUN
  • 从特定的 setup.py 进行 pip 安装

    我在 RedHat 的 Openshift 云服务上创建了一个 python 3 3 应用程序 默认情况下 它有我的项目的 setup py 我正在学习名为 使用 Flask 构建 SaaS 应用程序 的 Udemy 课程 源代码 http
  • 如何将数据动态分配给jqGrid?

    这是我创建 jqGrid 的代码 ptDataGrid jqGrid datatype local data arrSpecData colModel colmod rowNum 10 rowList 10 pager ptPager gr
  • 如何在 XAML 中定义变量?

    我在 XAML 中有以下两个按钮
  • svn 1.7 错误 E200009 无法添加所有目标,因为某些目标已经版本化

    我对存储库进行了彻底的检查 然后每天我都有一个 hudson 工作来运行脚本来备份配置 脚本的一部分是添加 xml svn add xml svn warning W150002 data hudson config xml is alre
  • difflib python 格式化

    我使用此代码来查找两个 csv 列表之间的差异并提出一些格式问题 这可能是一个简单的解决方法 但我是新手 正在尝试学习 但遇到了很多问题 import difflib diff difflib ndiff open test1 csv rb
  • 检测碰撞方向

    一块方形瓷砖与另一块方形瓷砖碰撞 调酒师说 I have 两个图块的高度 宽度 x 和 y 引起碰撞的运动的 2D 矢量 我需要知道碰撞发生在哪一侧 例如顶部 底部 左侧 右侧 以便适当地重置位置 我会给任何能回答这个问题的人一个心理饼干
  • 用于阻止大于 20MB 的提交的预提交挂钩

    是否可以为 SVN 1 8 编写 prcommit 挂钩以避免提交大于 20MB 的文件 任何建议 将不胜感激 谢谢 我尝试过 但这不适用于二进制文件或其他文件扩展名 filesize SVNLOOK cat t TXN REPOS f w
  • Pyspark 将多个列合并为一个 json 列

    我不久前问过 python 的问题 但现在我需要在 PySpark 中做同样的事情 我有一个像这样的数据框 df cust id address store id email sales channel category 1234567 1
  • iReport 中的新页面

    这是我的情况 我有一份详细区域包含 10 个 或更多 项目的报告 我有一个大文本字段 我想跨越多个页面 此文本与项目无关 我无法创建另一个页面 因为我的所有项目都非常适合第一页 如何在页脚上创建 强制 仅包含一些可变 静态 文本的新页面 换
  • 使用 Keras、Tensorflow 进行多时间序列维度的 RNN 时间序列预测

    我正在尝试在某些时间序列集上运行 RNN LSTM 网络 值得一提的是 时间序列正在分类 我有大约 600 个不同的时间序列 每个序列都有 930 个带有特征的时间步长 我已将数据结构化为 numpy 3D 数组 其结构如下 X 666 o
  • 这是使用 husky + lint-staged 的​​正确方法吗?

    我发现很多博客 包括 lint staged 文档 介绍了这样一种使用 husky lint staged 的 方法 如 package json 中定义的以下代码 scripts precommit lint staged lint st
  • 获取 ASP.NET 网站的 IIS 站点名称

    在我的 ASP NET Web 应用程序中 我想查找在 IIS 中创建它时指定的名称 该名称对于服务器来说是唯一的 我对网站的域名不感兴趣 而是对 IIS 中为该网站指定的实际名称感兴趣 我需要能够在 IIS6 和 7 上可靠地完成此操作
  • 如何将操作和处理程序添加到“处理货件”屏幕?

    如何将操作和处理程序添加到 处理货件 屏幕 我们想要向屏幕 SO503000 上的 操作 组合框添加一个操作 然后在代码中添加一个处理程序来处理新操作 我们希望在不必覆盖 SOShipmentEntry 图中 Action 的巨大 swit
  • Functools.update_wrapper() 无法正常工作

    I use Functools update wrapper 在我的装饰器中 但看起来像update wrapper仅重写函数属性 例如 doc name 但不影响help 功能 我知道这些答案 https stackoverflow co
  • Jasmine 2.0 rc* 等待未定义

    刚刚升级到茉莉花2 0 rc5 from 1 3现在我所有的测试都使用了waits 被打破了 因为waits and waitsFor 函数未定义 我似乎在网上找不到任何参考 有人知道替换 wait 的新 API 是什么吗 好吧 异步调用的
  • 语音识别中如何处理同音词?

    对于那些不熟悉什么是同音字 https en wikipedia org wiki Homophone是的 我提供以下示例 我们的 是 嗨和高 到 太 二 在使用时语音API https developer apple com docume
  • 如何编写写入 /var/log/myapp 目录的 C/C++ 应用程序?

    背景 在 Linux 系统上 应用程序日志 https help ubuntu com community LinuxLogFiles Application Logs存在于子目录中 var log 其所有者为root root并且在我的系