├── .gitattributes ├── .gitignore ├── Log4NetDemo.sln ├── Log4NetDemo ├── App.config ├── Config │ └── log4net.config ├── Log4NetDemo.csproj └── Program.cs ├── README.md └── ReferenceDll ├── Readme.txt ├── log4net.dll └── log4net.xml /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /*.suo 2 | /.vs 3 | /Log4NetDemo/obj 4 | /Log4NetDemo/bin 5 | /Log4NetDemo/*.user 6 | -------------------------------------------------------------------------------- /Log4NetDemo.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Log4NetDemo", "Log4NetDemo\Log4NetDemo.csproj", "{E76C7CF6-D430-448C-8569-BB862AD1816C}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReferenceDll", "ReferenceDll", "{96E6B257-B1D4-46AA-9162-48AB8AB4825B}" 9 | ProjectSection(SolutionItems) = preProject 10 | ReferenceDll\log4net.dll = ReferenceDll\log4net.dll 11 | ReferenceDll\log4net.xml = ReferenceDll\log4net.xml 12 | ReferenceDll\Readme.txt = ReferenceDll\Readme.txt 13 | EndProjectSection 14 | EndProject 15 | Global 16 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 17 | Debug|Any CPU = Debug|Any CPU 18 | Release|Any CPU = Release|Any CPU 19 | EndGlobalSection 20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 21 | {E76C7CF6-D430-448C-8569-BB862AD1816C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 22 | {E76C7CF6-D430-448C-8569-BB862AD1816C}.Debug|Any CPU.Build.0 = Debug|Any CPU 23 | {E76C7CF6-D430-448C-8569-BB862AD1816C}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {E76C7CF6-D430-448C-8569-BB862AD1816C}.Release|Any CPU.Build.0 = Release|Any CPU 25 | EndGlobalSection 26 | GlobalSection(SolutionProperties) = preSolution 27 | HideSolutionNode = FALSE 28 | EndGlobalSection 29 | EndGlobal 30 | -------------------------------------------------------------------------------- /Log4NetDemo/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Log4NetDemo/Config/log4net.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Log4NetDemo/Log4NetDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {E76C7CF6-D430-448C-8569-BB862AD1816C} 8 | Exe 9 | Properties 10 | Log4NetDemo 11 | Log4NetDemo 12 | v4.0 13 | 512 14 | true 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | false 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | true 32 | bin\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | false 37 | 38 | 39 | 40 | False 41 | ..\ReferenceDll\log4net.dll 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | Designer 58 | 59 | 60 | Always 61 | Designer 62 | 63 | 64 | 65 | 66 | 67 | 68 | 75 | -------------------------------------------------------------------------------- /Log4NetDemo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using log4net; 4 | 5 | namespace Log4NetDemo 6 | { 7 | /// 8 | /// 说明:本程序演示如何利用log4net记录应用程序日志信息 9 | /// 10 | public class MainClass 11 | { 12 | private static ILog log = LogManager.GetLogger("FileLogger"); 13 | 14 | public static void Main(string[] args) 15 | { 16 | log.Debug("调试信息的日志"); 17 | log.Info("一般信息的日志"); 18 | log.Warn("警告信息的日志"); 19 | log.Error("错误信息的日志", new Exception("发生了一个异常")); 20 | log.Fatal("致命错误的日志", new Exception("发生了一个致命错误")); 21 | 22 | Console.WriteLine("日志记录完毕。"); 23 | Console.Read(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Log4NetDemo 2 | 3 | ## 第10章的Demo下载及更多资料 4 | + Log4NetDemo下载地址:https://github.com/das2017/Log4NetDemo 5 | + ELK官网:https://www.elastic.co/ 6 | + 正则表达式配置说明:https://www.elastic.co/guide/en/beats/filebeat/current/regexp-support.html 7 | 8 | ## 新书上市: 9 | + 京东链接:https://item.jd.com/12477683.html 10 | + 当当链接:http://product.dangdang.com/1436599215.html 11 | + 天猫店铺:https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4011-16861154605.39.46be1b8bGWSsmz&id=585204361262&rn=12e44ccc5bb398b74fdd72e49e2af64e&abbucket=9 12 | 13 | ## 内容简介 14 | 本书结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。本书共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、统一应用分层等;框架篇主讲中间件和工具的使用,包括消息队列、缓存、Job、集中式日志、应用监控和微服务等;公共应用篇是技术与业务的结合,包括单点登录和企业支付网关;进阶篇是从架构到管理,包括技改案例、技术与业务的匹配与融合等。从架构、框架、公共应用,到案例实战和技术管理,本书将大公司的工程理念压缩应用到中小研发团队,使小团队也能构建大网站。 15 | 16 | ## 全书目录 17 |
 18 | 第1篇 开篇
 19 | 1 可参考的才是有价值的(含案例和代码)
 20 | 1.1 框架篇—工欲善其事,必先利其器
 21 | 1.2 架构篇—思想提升
 22 | 1.3 公共应用篇—业务与技术的结合
 23 | 1.4 进阶篇—从架构到管理
 24 | 1.5 案例参考和Demo下载
 25 | 第2篇 架构篇
 26 | 2 企业总体架构
 27 | 2.1 企业商务模型
 28 | 2.2 架构现状
 29 | 2.3 领域模型
 30 | 2.4 架构规划
 31 | 2.5 架构实施
 32 | 2.6 案例参考
 33 | 3 应用架构设计
 34 | 3.1 初识架构设计
 35 | 3.2 应用架构设计案例
 36 | 3.3 更多知识探讨
 37 | 3.4 互联网公司的架构设计要怎么落地
 38 | 3.5 你给技术打个分
 39 | 3.6 案例参考
 40 | 4 统一应用分层
 41 | 4.1 为什么要统一应用分层
 42 | 4.2 统一应用逻辑架构
 43 | 4.3 分层规范实践
 44 | 4.4 互动问答
 45 | 4.5 Demo下载
 46 | 5 生产环境诊断工具WinDbg
 47 | 5.1 诊断工具简介
 48 | 5.2 获取异常进程的Dump文件
 49 | 5.3 WinDbg的使用方法
 50 | 5.4 一个真实案例
 51 | 5.5 Demo下载
 52 | 第3篇 框架篇
 53 | 6 RabbitMQ快速入门及应用
 54 | 6.1 为什么要用消息队列RabbitMQ
 55 | 6.2 RabbitMQ简介
 56 | 6.3 RabbitMQ的工作原理
 57 | 6.4 RabbitMQ的基本用法
 58 | 6.5 Demo下载
 59 | 7 Redis快速入门及应用
 60 | 7.1 Redis简介
 61 | 7.2 Redis的数据结构
 62 | 7.3 Redis的重要特性
 63 | 7.4 使用方法
 64 | 7.5 Redis Key命名规范与常见问题
 65 | 7.6 Demo下载
 66 | 8 任务调度Job
 67 | 8.1 Job简介
 68 | 8.2 WinJob
 69 | 8.3 HttpJob
 70 | 8.4 Cron表达式
 71 | 8.5 Demo下载
 72 | 9 应用监控系统Metrics
 73 | 9.1 Metrics简介
 74 | 9.2 埋点Metrics.NET的方法
 75 | 9.3 Grafana配置
 76 | 9.3.1 设置仪表盘(Dashboard)
 77 | 9.3.2 设置面板(Panel)
 78 | 9.3.3  设置模板Templating
 79 | 9.3.4 设置Time Range
 80 | 9.3.5 告警设置
 81 | 9.4 其他说明
 82 | 9.5 Metrics的使用价值
 83 | 9.6 Demo下载
 84 | 10 集中式日志ELK
 85 | 10.1 集中式日志
 86 | 10.2 配置方法
 87 | 10.3 使用方法
 88 | 10.4 Demo下载
 89 | 11 微服务架构MSA
 90 | 11.1 MSA简介
 91 | 11.2 MSA框架的使用
 92 | 11.3 微服务治理
 93 | 11.4 微服务网关API Gateway
 94 | 11.5 Demo下载
 95 | 12 搜索服务Solr
 96 | 12.1 Solr简介
 97 | 12.2 Solr的工作原理
 98 | 12.3 Solr的特性
 99 | 12.4 Demo下载
100 | 13 分布式协调器ZooKeeper
101 | 13.1 ZooKeeper是什么
102 | 13.2 ZooKeeper的工作原理简介
103 | 13.3 ZooKeeper的典型应用场景
104 | 13.4 Demo下载
105 | 14 小工具合集
106 | 14.1 ORM工具
107 | 14.2 对象映射工具
108 | 14.3 IoC工具
109 | 14.4 DLL包管理工具
110 | 14.5 Demo下载
111 | 15 一键发布和测试之持续集成工具Jenkins
112 | 15.1 Jenkins简介
113 | 15.2 Jenkins插件与相关工具
114 | 15.3 Jenkins关键配置
115 | 15.4 Jenkins的使用价值
116 | 第4篇 公共应用篇
117 | 16 单点登录
118 | 16.1 单点登录简介
119 | 16.2 SSO技术实现
120 | 16.3 JWT规范
121 | 17 企业支付网关
122 | 17.1 企业支付网关介绍
123 | 17.2 统一支付服务
124 | 17.3 统一支付通知
125 | 17.4 Demo下载
126 | 第5篇 进阶篇
127 | 18 技改之路:从单体应用到微服务
128 | 18.1 系统背景
129 | 18.2 前期工作
130 | 18.3 技改实施
131 | 18.4 总结
132 | 18.5 互动问答
133 | 19 机票垂直搜索引擎之性能优化
134 | 19.1 行业背景与垂直搜索
135 | 19.2 主要问题与解决方案
136 | 19.3 静态数据与任务打底
137 | 19.4 缓存策略与数据一致
138 | 19.5 实时查询与三段超时
139 | 19.6 政策匹配与算法优化
140 | 19.7 小结
141 | 20 上云纪要
142 | 20.1 为什么要上云
143 | 20.2 内部虚拟化和外部云化
144 | 20.3 云选型
145 | 20.4 上云八条
146 | 20.5 成功上云
147 | 20.6 上云总结
148 | 21 技术与业务的匹配与融合
149 | 21.1 技术人员与业务人员的抱怨
150 | 21.2 问题出在哪里
151 | 21.3 理解源于彼此的了解
152 | 21.4 如何去匹配与融合
153 | 21.5 什么在驱动公司的发展
154 | 22 研发团队文化是怎么“长”出来的
155 | 22.1 神秘的文化
156 | 22.2 遇到的问题
157 | 22.3 解决之道
158 | 22.4 总结与提升
159 | 22.5 “长”出来的团队文化
160 | 后记
161 | 架构师进阶之路
162 | 谈谈互联网公司的技术架构和管理
163 | 短评
164 | 
165 | -------------------------------------------------------------------------------- /ReferenceDll/Readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/das2017/10-Log4NetDemo/57fbebc40c26ca7e34f30d2889d2f3fe6f8ecea1/ReferenceDll/Readme.txt -------------------------------------------------------------------------------- /ReferenceDll/log4net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/das2017/10-Log4NetDemo/57fbebc40c26ca7e34f30d2889d2f3fe6f8ecea1/ReferenceDll/log4net.dll --------------------------------------------------------------------------------