LOG4cxx安装指南
LOG4cxx安装指南
简介:Log4shell是开放源代码项目Apache Logging Service的子项目log4j在shell下的实现,用于为shell程序提供日志功能,以便开发者对目标程序进行调试和审计。虽然shell可以方便的操作文件,但通过成熟的日志框架更方便我们对日志的记录与处理。
(1)Reference-ubuntu
(2)Reference-其它
(3)Reference-log4shell(该参考文档无法实现仅供参考)
1 下载源码
安装:
apr\apr-util、log4cxx
2 安装log4cxx步骤-ubuntu(已验证)
2.0 环境
- Linux version 4.15.0-70-generic (buildd@lgw01-amd64-057) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12))
2.1 安装apr
# ./configure --prefix=/usr/local
# make
# sudo make install
2.2 安装apr-util
# ./configure --prefix=/usr/local --with-apr=/usr/local
# make
# sudo make install
2.3 安装log4cxx
# ./configure --prefix=/usr/local/ --with-apr=/usr/local/ --with-apr-util=/usr/local/ --with-charset=utf-8 --with-logchar=utf-8
添加头文件
src/main/cpp/inputstreamreader.cpp添加#include <string.h>
src/main/cpp/socketoutputstream.cpp添加#include <string.h>
src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;
# make
# sudo make install
3 测试
3.1 测试主函数
main.cpp
#include <log4cxx/logger.h>
#include <log4cxx/basicconfigurator.h>
#include <log4cxx/helpers/exception.h>
#include <log4cxx/propertyconfigurator.h>using namespace log4cxx;
using namespace log4cxx::helpers;LoggerPtr logger_file(Logger::getLogger("file"));//获取配置文件中file对应的句柄
LoggerPtr logger_file(Logger::getLogger("console"));//获取配置文件中console对应的句柄int main(){PropertyConfigurator::configure("./log4cxx.properties");//加载配置文件,下面会细说LOG4CXX_INFO(logger_file,"This is a test");return 0;
}
3.2 配置文件
log4cxx.properties
#设置日志level为INFO,fa为文件输出对象,ca为控制台输出对象
log4j.rootLogger=INFO,fa,ca
#设置日志对象
log4j.logger.console=INFO,ca
log4j.logger.file=INFO,fa
#不向默认对象(rootLogger)输出,因此信息只能输出到文件
log4j.additivity.file=false
#**************************
#控制台,同时也会输出到默认输出对象
#**************************
log4j.appender.ca=org.apache.log4j.ConsoleAppender
log4j.appender.ca.layout=org.apache.log4j.PatternLayout
log4j.appender.ca.layout.ConversionPattern=[%-5p][%d] : %m%n
#**************************
#设置日志文件信息,比如大小,时间格式
#**************************
log4j.appender.fa=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fa.File=./log/today.log
log4j.appender.fa.Append=fasle
log4j.appender.fa.MaxFileSize=10MB
log4j.appender.fa.MaxBackupIndex=1000
log4j.appender.fa.DatePattern=yyyy-MM-dd
log4j.appender.fa.layout=org.apache.log4j.PatternLayout
log4j.appender.fa.layout.ConversionPattern=[%-5p][%d] : %m%n
3.2 配置环境变量(~/.bashrc的方法?)
export LD_LIBRARY_PATH=/usr/local/lib
或长期生效~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib
export PATH=$LD_LIBRARY_PATH:$PATH
# source ~/.bashrc
# echo $PATH # 查看结果
3.3 编译
# g++ main.cpp -o test -llog4cxx
3.4 执行
进入log文件夹打印’today.log’日志
[INFO ][2020-02-19 20:02:01,477] : This is a test
4 移植log4cxx步骤-集中器(交叉编译没有寻找到log4cxx库,待解决)
(1)Reference-交叉编译-报错与解决
4.0 环境
- Linux version 4.1.15-gee690fe-dirty (root@ubuntu) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05) )
4.1 安装pcre
# ./configure --prefix=/home/pan/toolchain/log4shell/install/usr/local --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld
4.2 移植apr
①
# ./configure --host=arm-linux-gnueabihf --prefix=/home/pan/toolchain/log4shell/install/usr/local CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes ac_cv_sizeof_struct_iovec=8 --cache=arm-linux.cache
待测试
# export ARMROOTS=/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/libc
./configure --host=arm-linux-gnueabihf --prefix=$ARMROOTS/usr/apr CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes ac_cv_sizeof_struct_iovec=8 --cache=arm-linux.cache
②
./arm-linux.cache添加如下代码
apr_cv_process_shared_works=yes
apr_cv_mutex_robust_shared=yes
③
./configure添加如下代码
1>源码位置:
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_ssize_t" >&5
$as_echo_n "checking which format to use for apr_ssize_t... " >&6; }
...
$as_echo "%ld" >&6; }
上个代码后插入如下代码:(添加)
elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long_long";thenssize_t_fmt="lld"{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %lld" >&5
$as_echo "%lld" >&6; }
衔接源代码:
elseas_fn_error $? "could not determine the proper format for apr_ssize_t" "$LINENO" 5
fi
2>源码位置:
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_size_t" >&5
$as_echo_n "checking which format to use for apr_size_t... " >&6; }
...
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %ld" >&5
$as_echo "%ld" >&6; }
上个代码后插入如下代码:(添加)
elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long_long"; thensize_t_fmt="lld"{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %lld" >&5
$as_echo "%lld" >&6; }
衔接代码
elseas_fn_error $? "could not determine the proper format for apr_size_t" "$LINENO" 5
fi
# make
# sudo make install
4.3 移植apr-util
# ./configure --prefix=/home/pan/toolchain/log4shell/install/usr/local --with-apr=/home/pan/toolchain/log4shell/install/usr/local --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld
# make
# sudo make install
4.3 安装log4cxx
# cd apache-log4cxx-0.10.0
# ./configure --host=arm-linux-gnueabihf --prefix=/home/pan/toolchain/log4shell/install/usr/log4cxx/ --with-apr=/home/pan/toolchain/log4shell/install/usr/local/ --with-apr-util=/home/pan/toolchain/log4shell/install/usr/local/ --with-charset=utf-8 --with-logchar=utf-8 CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
添加头文件
src/main/cpp/inputstreamreader.cpp添加#include <string.h>
src/main/cpp/socketoutputstream.cpp添加#include <string.h>
src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;
# make
# sudo make install
5 测试移植
5.1 配置环境变量
# export ARM_LD_LIBRARY_PATH=/home/pan/toolchain/log4shell/log4cxx
log4cxx放到如下目录下
/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/include/c++/4.8.2/log4cxx
log4cxx/lib下的文件导入到arm-linux…目录下:
root@ubuntu:/home/pan/toolchain/log4shell/install/usr/log4cxx/lib# cp -rf * /home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/lib
5.2 编译(编译不过)
# arm-linux-gnueabihf-g++ main.cpp -o test -I/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/lib/arm-linux-gnueabi/log4cxx -llog4cxx
5.2.1 编译报错(未解决)
/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/ ../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: warning: libaprutil-1.so.0, needed by /home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/ ../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/lib/liblog4cxx.so, not found (try using -rpath or -rpath-link)
LOG4cxx安装指南相关推荐
- log4cxx第三篇----使用多个logger
使用多个logger时,所有logger的配置写在一个配置文件里面 两个例子: 1 一个继承的例子(http://logging.apache.org/log4cxx/) // file com/fo ...
- Storm 0.9安装指南
Storm 0.9.2安装指南 0 Storm0.9的亮点 引用网上的描写叙述: "Storm 0.9.0.1版本号的第一亮点是引入了netty transport.Storm网络传输机制实 ...
- linux 保存编译log,(转)Linux下编译安装log4cxx
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...
- 10个深度学习软件的安装指南(附代码)
来源:AI前线 本文长度为2385字,建议阅读4分钟 本文为你介绍10个深度学习软件安装指南. 由于近期论文的需要,我搭建了一个基于 Ubuntu 和英伟达的深度学习环境.尽管已经有很多非常棒的关于英 ...
- Facebook Docusaurus 中文文档 安装指南
此系列文章的应用示例已发布于 GitHub: docusaurus-docs-Zh_CN. 可以 Fork 帮助改进或 Star 关注更新. 欢迎 Star. 安装指南 Docusaurus 是从全新 ...
- apache hadoop 2.4.0 64bit 在windows8.1下直接安装指南(无需虚拟机和cygwin)
工作须要.要開始搞hadoop了,又是大数据,自己感觉大数据.云.仅仅是ERP.SOAP风潮之后与智能地球一起诞生的概念炒作. 只是Apache是个奇妙的组织.Java假设没有它也不会如今如火中天.言 ...
- VS2005中ajax安装指南[转]
2019独角兽企业重金招聘Python工程师标准>>> VS2005中ajax安装指南[转] 以下是收集关于AjaxControlToolkit安装的一篇文章,感谢原作者 AjaxC ...
- 本机安装PaddlePaddle - 安装指南
简 介: 根据 文档安装指南 介绍了在本机安装PaddlePaddle的步骤. 关键词: PaddlePaddle,pip,安装 #mermaid-svg-RMWtzcncmslaS8dM {font ...
- [WTL] STLport安装指南
STLport安装指南 STLport-4.6 是完全兼容ANSI C++标准的类库. This distribution contains STLport sources only, no bina ...
- Team Foundation Server Beta3 安装指南
Team Foundation Server Beta3 安装指南 发布日期: 11/11/2005 | 更新日期: 12/15/2005 本页内容 1.概述 2.安装的安全 3.单服务器的安装过程 ...
最新文章
- 机房配电柜、配电箱在安装时应该注意哪些“禁忌”?
- 局部钩子能防全局钩子吗_Vue你真的熟吗?来回答这几个问题试试
- 关于用 ABAP 代码手动触发 SAP CRM organization Model 自动决定的研究
- 【洛谷 P4051】 [JSOI2007]字符加密(后缀数组)
- 云计算之路-阿里云上:Web服务器请求到达量突降
- 大数据工程师技能图谱
- [nsis]安装包反编译
- mysql数据库优化经验_MySQL数据库优化经验详谈
- 使用花生壳做内网穿透
- xu2w显示屏软件下载_LED BEST(LED显示屏控制软件) V2.8 官方版
- Horizontalscrollview
- 【Python】Python中将字符串中的大写字母转换为小写字母,同时将小写字母转换为大写字母
- mysql 1698_MySql Error 1698(28000)问题的解决方法
- 内外网安全文件摆渡如何实现自动化?
- Halcon学习笔记-工业相机千兆网线和USB优劣对比
- 前端开发相关的学习网站
- JAVA高级(一)——lambda
- Safari iframe方式无法呼起微信app之问题探索
- 哪位前端大神可以帮我看一下我的问题
- 不要压制冬天的寒冷,也不要抵御夏天的炎热
热门文章
- uniapp字体图标的使用
- PAT 甲级 1158 Telefraud Detection
- 2019春季PAT甲级题解
- 2013蓝色星际笔试题
- 如何解决“App开发者需要更新此App以在此iOS版本上正常工作”
- 《遥远的救世主》遵守客观规律(七)——文化属性
- EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程
- “微肥”还是“歪fai”
- 【学术相关】人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史...
- 2021-04-15 三级管npn和pnp的区别