Poco Application 框架学习(3)配置文件,日志

2023-05-16

配置文件及日志:
配置文件:
配置文件初始化:
一般应用程序都会有配置文件,Application 框架也不例外。通过一下接口来读取配置文件信息。当前 Poco支持的格式有 .ini .xml .json .properties 等格式。需要注意的是 Poco Application 是根据扩展名来是别配置文件的,所以配置文件的扩展名不可以乱起。
配置文件使用第一步就是加载配置文件,使用以下函数。建议在 Application 框架的 init() 函数调用。
Util::Application::loadConfiguration(“yuhaiyang.json”, PRIO_APPLICATION );
第一个是参数是配置文件的路径及文件名。
第二个参数是等级。当前可用的等级有

enum ConfigPriority
{   
    PRIO_APPLICATION = -100,
    PRIO_DEFAULT     = 0,
    PRIO_SYSTEM      = 100
};

如果程序有两个配置文件a,b,a等级为PRIO_APPLICATION, 包含了同一个选项port=100,b等级为,PRIO_DEFAULT ,
包含了一个选项port=200 ,那么程序里以PRIO_APPLICATION 配置文件的为准 port 在程序里值就是 100。

获取配置文件里的值,这里使用 json 格式的配置文件配置文件内容为

{
    "dbPool":
    {
        "comment":"这里是数据库链接池的信息",
        "host":"192.168.1.120",
        "port":"3306",
        "user":"rd",
        "password":"rd"
    },
    "RadiusServer" :
    {
        "comment":"这里包含的是RadiusServer的信息",
        "name" : "RadiusServer",
        "port" : "8086"
    }
}

配置文件的使用:
获取方法为以下几种。想获取什么类型就调用什么类型的 getXXX 方法即可。

std::string dbHost = config().getString( "dbPool.host" );
    uint16_t dbPort = config().getUInt( "dbPool.port" );
    uint16_t rPort = config().getUInt("RadiusServer.port");

日志:
日志初始化:
Application框架也是包含日志的。我们在使用的时候要通过以下函数对日志进行初始化。(还是最好放到 init() 方法调用)

logger().setChannel(Channel* pChannel);

在这之前我们要初始化一个 Channel。

//日志部分。

Poco::AutoPtr<Poco::Channel> channel;
    {
        AutoPtr<FileChannel> fileChannel(new FileChannel);
        fileChannel->setProperty("path", "./test");     //指定日志路径及文件名
        fileChannel->setProperty("archive", "timestamp");   //日志文件加时间戳
        Poco::AutoPtr<Poco::PatternFormatter> patternFormatter(new Poco::PatternFormatter());
        patternFormatter->setProperty("pattern","%Y %m %d %H:%M:%S %s(%l): %t");    //每条日志时间
        channel = new Poco::FormattingChannel( patternFormatter,fileChannel );//初始化 Channel
    }

然后

logger().setChannel( channel );//把 Application 的 Channel 设置为我们指定的输出

日志使用

logger().information(" this is debug information");
logger().information("initialize application successful!"); //日志功能
logger().warning("memory error ")
logger().fatal("application occur fatal error ,exit")

支持的日志等级

    /// Valid values are:
        ///   - none (turns off logging)
        ///   - fatal
        ///   - critical
        ///   - error
        ///   - warning
        ///   - notice
        ///   - information
        ///   - debug
        ///   - trace

注意:
Application 是单实例类也就是程序只能创建一次。应用程序确实只需要创建一次此对象就够了。单实例还有个好处就是我们可以在任何时候(当然是日志和配置文件初始化之后),任何位置,来获取 Application 的实例来使用配置文件以和日志。可以通过如下方式来使用。

Util::Application::instance().logger().information( "initialize application successful!" ); /* 日志功能 */
std::string dbHost = Util::Application::instance().config().getString( "dbPool.host" );

Poco Application 框架基本功能介绍完毕。我们今后写程序就可以使用这个框架,快速的开发应用软件了。

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

Poco Application 框架学习(3)配置文件,日志 的相关文章

  • QT中实现应用程序的单例化

    一介绍 通过编写一个QSingleApplication类 来实现Qt程序的单例化 原文的作者是在Windows Vista Qt4 4 下实现的 不过应用在其他平台上是没问题的 本文是我在http www qtcentre org wik
  • 【转】QT中QWS的含义

    QT编程和文档中的术语QWS的全称是Qt windows system 是QT自行开发的窗口系统 体系结构类似X Windows 是一个C S结构 由QWS Server在物理设备上显示 由QWS Client实现界面 两者通过socket
  • 让你的应用支持新iPad的Retina显示屏

    一 应用图片 标准iOS控件里的图片资源 苹果已经做了相应的升级 我们需要操心的是应用自己的图片资源 就像当初为了支持iPhone 4而制作的 2x高分辨率版本 译者 以下简称高分 图片一样 我们要为iPad应用中的图片制作对应的高分版本
  • 框架分析(11)-测试框架

    框架分析 11 测试框架 专栏介绍 Selenium 框架特性 多语言支持 多浏览器支持 元素定位 页面操作 等待机制 浏览器控制 测试报告 并行执行 集成测试框架 优缺点分析 优点 开源免费 跨平台 多语言支持 强大的定位器 支持多种测试
  • 数据在OSI七层模型中的名字 数据帧、数据包、数据报以及数据段

    数据帧 数据包 数据报以及数据段 OSI参考模型的各层传输的数据和控制信息具有多种格式 常用的信息格式包括帧 数据包 数据报 段 消息 元素和数据单元 信息交换发生在对等OSI层之间 在源端机中每一层把控制信息附加到数据中 而目的机器的每一
  • jar包读取资源文件报错:找不到资源文件(No such file or directory)

    1 遇到问题 1 Maven项目开发阶段正常运行 Java程序可以读取配置文件 public class Main public static void main String args throws Exception Main read
  • 黑客美化版大马_2012版

  • DDD中的数据访问层设计

    请原谅我糟糕的英语 好的 我现在正在考虑 DDD 方法 听起来不错 但是 有一个小问题 DDD 表示领域模型层与数据访问层 以及所有其他层 完全解耦 因此 当 DAL 保存某个业务对象时 它只能访问该对象的公共属性 现在的问题是 我们如何保
  • ASP.NET MVC / EF4 / POCO / Repository - 如何更新关系?

    我之间有 1 关系Review and 建议 我的模型的相关部分 也是 EF4 映射的 POCO public class Review public ICollection
  • POCO、DTO、DLL 和贫血域模型

    我正在看POCO和DTO的区别 https stackoverflow com questions 725348 poco vs dto 看起来 POCO 是具有行为 方法 的 dto 并遇到本文 http www martinfowler
  • 带有 poco 生成的实体框架 IQueryable

    我创建了一个 T4 模板 它生成标准实体类及其每个属性的接口 以便我可以制作仅包含我想要的数据的自定义 poco 对象 我还创建了一个复制函数 它可以在实现所述实体接口的任何对象之间进行转换 生成的代码如下所示
  • 代码优先导致所需的关系是可选的?

    public class Client public Int32 ClientID get set public virtual ICollection
  • Entity Framework Code First - 有没有办法从 POCO 类创建模型图 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我真的很喜欢新的实体框架代码优先功能 目前处于 CTP5 王牌的一件事是能够从我构建的 POCO 类生成
  • 代码生成器不好吗?

    我使用 MyGeneration 和 nHibernate 来创建基本的 POCO 对象和 XML 映射文件 我听到有些人说他们认为代码生成器不是一个好主意 目前最好的想法是什么 当代码生成生成数千行无法理解的代码时 是否只是代码生成不好
  • DataSets to POCOs - 有关 DAL 架构的询问

    我必须非常快速地开发一个相当大的 ASP NET MVC 项目 并且我想获得一些关于我的 DAL 设计的意见 以确保不会有任何问题困扰我 因为 BL 可能会变得相当复杂 一些背景知识 我正在使用 Oracle 后端 因此内置的 LINQ t
  • 使用 Poco 和 Boost C++ 的多个 Http 服务器

    我正在尝试使用 Poco Net 和 Boost 库创建多个 Http 服务器 但在 Poco 文件内部出现以下错误应用程序 cpp Assertion violation pInstance 0 in file src Applicati
  • 如何在 EF Code First 中映射表拆分?

    如何使用 EF Code First 映射表拆分 例如 描述了 EDMX 的表拆分here http thedatafarm com blog data access ef table splitting ndash the opposit
  • 实体框架 POCO - 如果字段更新两次如何防止错误?

    我正在开始使用模型优先配置中的 POCO 实体框架 我有一个稍微不标准的模型 通过自定义 tt 文件生成以响应 edmx 中的自定义属性 使我能够触发 NotifyPropertyChanged 事件来记录对某些属性的更新 这导致一个实际上
  • 向 POCO 类添加方法

    我有以下设置 MVC gt 服务 gt 存储库 现在我想让用户能够向文档添加注释 只有与文档关联的用户 作为所有者或审阅者 才能添加注释 因此在我的 NoteService 中 我执行以下操作以确保用户对所选文档具有权限 public No
  • 如何使用 Entity Framework 4 Code First (POCO) 声明一对一关系

    如何使用 Entity Framework 4 Code First POCO 声明一对一关系 I found 这个问题 实体框架4中的一对一关系 https stackoverflow com questions 2089395 one

随机推荐

  • Teach-Repeat-Replan: A Complete and Robust System for Aggressive Flight in Complex Environments 论文笔记

    Teach Repeat Replan 飞行走廊生成方法凸多面体膨胀CPU加速GPU加速飞行走廊生成与环路消除 时空全局轨迹优化空间轨迹优化时间轨迹优化 在线局部重规划局部重规划框架 飞行走廊生成方法 围绕 teaching traject
  • ovn实验手册

    参考文档 openstack ovn结合官方文档 ovn实践参考
  • 蓝桥杯 小数第n位 问题的几种解法

    蓝桥杯 小数第n位 问题的几种解法 题目描述解法1 根据手动计算除法的过程 题目描述 我们知道 xff0c 整数做除法时 xff0c 有时得到有限小数 xff0c 有时得到无限循环小数 如果我们把有限小数的末尾加上无限多个 0 xff0c
  • 解决Vmware虚拟机无法打开Ubuntu的问题

    1 xff0c 问题 很多同学会在Window PC机上使用Vmware虚拟机来搭建Linux开发环境 xff08 如Ubuntu xff09 xff0c 使用过程中难免会出现Ubuntu崩溃 异常关闭等现象 xff0c 此时 xff0c
  • antd 表单动态添加表单项编辑回显数据

    在做一些后台管理会用到很多的表单 xff0c 比如动态项表单 xff0c 如下图这样的 话不多说 xff0c 上代码 创建修改版本 import React from 34 react 34 import Form Notification
  • 二进制流文件下载

    在做一些文件下载的时候 xff0c 后端返回的二进制流文件 xff0c 这里前端的兄弟姐妹就需要处理一下了 直接上代码 xff1a 下载 export function download id return request url 96 r
  • ES6数组reduce的妙用

    定义和用法 reduce 方法接收一个函数作为累加器 xff0c 数组中的每个值 xff08 从左到右 xff09 开始缩减 xff0c 最终计算为一个值 reduce 可以作为一个高阶函数 xff0c 用于函数的 compose 注意 r
  • element 去掉form表单的某一项单个form-Item校验

    在执行完相应的方法 xff0c 立即触发移除校验 this nextTick 61 gt this refs 39 form 39 clearValidate 39 name 39 this refs 39 form 39 clearVal
  • element表单多行数据自定义校验以及自定义传参

    场景说明 如下图 在form表单中迁移table表格 每行数据都要能编辑 单独校验 注释 此处的资源下拉框校验 还需要走异步请求获取结果 然后再对比校验 nbsp 话不多 上代码说明 1 首先获取的接口数据如下 form vmDataLis
  • Hbuilder修改项目git提交路径

    在git的使用中 xff0c 经常会出现git服务器IP地址变更的现象 xff0c 一旦服务器的IP地址有变化 xff0c 本地仓库的代码就和服务器失去了联系 xff0c 无法同步服务器的代码 这里说明一下 xff0c 如何修改git提交路
  • css3的clip-path方法剪裁实现(三角形,多边形,圆,椭圆)

    本例讲解如何通过clip path 把一个div xff08 元素 xff0c 可以是图片等 xff09 裁切成不同的形状 xff0c 这里以一个div为例宽高均为300px 注意 xff1a 不支持IE和Firefox xff0c 支持w
  • layui表格(table)排序

    layui表格本身提供sort排序 xff0c 但是只能排序当前一页 xff1b 如果后台返回几十页数据 xff0c 需要排序显示 xff0c 该如何做呢 xff0c 这里闲心大神提供了一个sort监听方法 xff1a 通过监听排序的列 x
  • Liunx下修改MySQL字符集

    Liunx下修改MySQL字符集 1 查找MySQL的cnf文件的位置 color 61 green find iname 39 cnf 39 print color color 61 olive usr share mysql my in
  • vue刷新当前页面,重载页面数据

    业务场景 xff1a 在管理后台 xff0c 在执行完 xff0c 增 xff0c 删 xff0c 改 xff0c 操作的时候 我们需要刷新一下页面 xff0c 重载数据 在JQ中我们会用到location reload 方法 xff0c
  • layui动态渲染生成左侧3级菜单(根据后台返回数据)

    声明 xff1a 这里非常感谢闲心大神 xff0c 开源了非常好用的前端UI框架 xff0c layui xff0c 如有侵权请联系我 当然闲心在2 0版本的layuiAdmin已经支持了 xff0c 不过是收费版的 xff0c 需要的同学
  • layui加载数据显示loading加载完成loading消失

    项目中 xff0c 向后台请求数据 xff0c 经常会出现较长的等待时间 xff0c 这时我们需要一个loading转圈圈 xff0c 接收到后台的数据时 xff0c 让loading消失 这layui中使用方法如下 xff1a 以表格为例
  • 信号量,消息邮箱的运用

    1 信号量的用途 1 xff09 共享资源的保护 xff0c 例如需要共用一段内存 xff0c 初始信号量的计数值为1 task1 xff1a task2 pend信号量 pend信号量 共享资源 共享资源 post信号量 post信号量
  • istio 部署及调用链显示

    选择版本号下载 https github com istio istio releases 下载 wget https github com istio istio releases download 1 13 2 istio 1 13 2
  • Poco Application 框架学习(1)

    基本的功能 提供了一个 int run int argc char argv 方法用于执行app run 方法会调用 类的 void initialize Application amp self 与 int main const std
  • Poco Application 框架学习(3)配置文件,日志

    配置文件及日志 配置文件 xff1a 配置文件初始化 一般应用程序都会有配置文件 xff0c Application 框架也不例外 通过一下接口来读取配置文件信息 当前 Poco支持的格式有 ini xml json properties