.NET Core log4net 使用

log4net .NET Core 版使用,log4net 2.0.7版发布也有一段时间了,从2.0.6 版开始就已经支持.NET Core。 之前有介绍NLog .NET Core版的使用,ASP.NET Core 开发-Logging 使用NLog 写日志文件。 ASP.NET Core已经内置了日志支持,可以轻松输出到控制台。使用log4net 将日志写入到文件及输出控制台。   .NET Core项目使用 新建一个 .NET Core 项目,选择控制台应用程序。 添加引用: Install-Package log4net   使用简单配置,将日志输出至控制台,跟之前.NET 版本略微有些区别,需要指定Repository 。

运行程序显示如下:   下面增加配置,让其输出至文件。 在项目中添加一个配置文件,这里添加一个log4net.config ,内容如下:

这里定义了三个 Appender,都会起作用,然后日志级别ALL 所有的日志都会记录。 更改Program.cs 代码如下:

加了指定配置文件。运行程序会生成一个文件夹和一个文件,因为重新定义了ConsoleAppender,控制台输出也有所不同。   ASP.NET Core项目使用 在ASP.NET Core 使用也是一样,可以在Program.cs或Startup.cs 中指定Repository,然后控制器或中间件中获取对象使用。 以下代码是在Startup 构造函数中初始化log4net

然后在Configure 中加了一个记录日志

  在HomeController 也增加了:

运行应用结果如下,然后对应的文件会有日志记录。   对于输出中文乱码,需要增加编码引用,以及代码。NLog 那篇文章有介绍。写到日志文件是没有问题的。   参考文档: http://logging.apache.org/log4net/release/manual/configuration.html http://logging.apache.org/log4net/release/config-examples.html   如果你觉得本文对你有帮助,请点击“推荐”,谢谢。 ASP.NET Core 3.1 新书发布 《ASP.NET Core项目开发实战入门》 京东当当淘宝 GitHub:https://github.com/linezero 博客示例代码GitHub:https://github.com/linezero/Blog from:https://www.cnblogs.com/linezero/p/log4net.html

.netCore 反射 :Could not load file or assembly 系统找不到指定文件

“System.IO.FileNotFoundException:“Could not load file or assembly 'ClassLibrary2, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。”” 在 .net 程序开发中我们会经常用到反射,最近在开始慢慢接触 .netCore。Core 反射的语法也是一样的,所以写下来也没有什么问题,但是一运行,就弹出了开头的 异常。 项目结构如下 ClassLibrary3 是一个接口

  ClassLibrary2 是 ClassLibrary3 的实现

  主程序通过反射获取到到类型并创建对象

  这代码都这里没有问题,但是执行的时候却抛出了 开篇的异常。仔细检查了下,ClassLibrary2 生成的 dll 确认已经是复制到了主程序目录下。 刚开始接触Core  也没有系统去熟悉,最后经过多方努力后,发现在主程序项目下有个 deps.json 的文件 文件内容是这样的(里面没有 ClassLibrary2 因为我们没有在项目中引用 ClassLibrary2) 然后想着 那异常提示找不到路径,那我们在这里配置下不久可以了? 然后改成如下:   这时候我们运行程序: 完美! from:https://www.cnblogs.com/mengtree/p/7139108.html

Kubernetes(一) 跟着官方文档从零搭建K8S

前言 本文将带领读者一起, 参照着Kubernetes官方文档, 对其安装部署进行讲解. Kubernetes更新迭代很快, 书上、网上等教程可能并不能适用于新版本, 但官方文档能. 阅读这篇文章你能收获到: 如何阅读Kubernetes官方安装指南并搭建一个Kubernetes环境. Kubernetes安装过程中的注意事项. 避过常见的坑. 阅读本文你需要: 熟悉Linux命令. 知道Kubernetes是用来干什么的 (不然装它干啥(ಥ_ಥ)). 知道Docker 器材准备 文档链接: Before you begin 序号 名称 数量 备注 1 服务器 2 操作系统: Linux(centos7, 其它操作系统也可, 安装过程类似, 可参考官方文档) 机器配置: CPU >= 2, 内存 >= 2G 从官网找到kubeadm安装文档入口, 文档很详细. 英文阅读没有障碍的读者推荐直接查看英文文档, 中文文档不全且更新不及时安装时可能存在问题. 前期准备 笔者已经预先安装好了两台虚拟机, centos7(CPUx2, 内存2.5G). 并在路由器上固定了这两个虚拟机的IP地址. 修改hostname

  修改后, 两台虚拟机的配置如下:

  确认MAC和product_uuid的唯一性 文档链接: Verify the MAC address and product_uuid are unique for every node

  注: 如果你的centos7没有ifconfig命令, 可以执行yum install net-tools进行安装. 配置防火墙 文档链接: Check required ports 由于是本地内网测试环境, 笔者图方便, 直接关闭了防火墙. 若安全要求较高, 可以参考官方文档放行必要端口.

  […]

《K8S权威指南》读书笔记-入门篇

一. k8s介绍 1. 是什么 kubernetes:古希腊“舵手”的意思(指引鲸鱼-docker) Production-Grade Container Orchestration:生产级别的容器编排系统 is an open-source system for automating deployment, scaling, and management of containerized applications:用于自动部署,扩展和管理容器化应用程序的开源系统 2. 发展历程 google内部使用十年之久的大规模机器管理系统-Borg,k8s是其他开源版本。 2014年6月 谷歌在旧金山的发布会为这款新的开源工具揭牌 2015年4月:google发布论文,高调宣传k8s 2015年7月:发布1.0版本 2015-2016:1.0-1.5,主要发布了五个版本 2017年: 相继推出 1.6、1.7、1.8、1.9,围绕稳定性、性能和平台的 cloud availability 做了改进 2018年3月27日,v1.10 发布。此版本持续增强了 Kubernetes 2018年6月28 日,v1.11 发布。此版本增强了网络功能、可扩展性与灵活性。Kubernetes 1.11 功能的更新为任何基础架构、云或内部部署都能嵌入到 Kubernetes 系统中增添了更多可能性的成熟性、可扩展性以及可插拔性,并在存储、安全、网络增强了其稳定性 2018年9月28日,v1.12 发布。此版本新增了两个备受期待的功能,Kubelet TLS Bootstrap 和对 Azure 虚拟机规模集支持(并已达到 GA 阶段)。同时该版本在安全性和 Azure 等关键功能上作出了改进; 2018年12月4日,v1.13发布。此版本的三个主要特性已逐渐过渡到 GA。此版本中的显着特征包括:使用 kubeadm 简化集群管理、Container Storage Interface(CSI)、以 CoreDNS 作为默认 DNS 大约每100天更新一次,如今已是 V 1.15.0版本(2019.7.17) 3. 特点 一切以服务为中心 自动化:自我扩展、自我诊断 底层不仅仅依赖docker,还支持Rocket 不局限于语言,对现有代码、框架没有任何侵入 4. 功能 基于容器的、一站式的分布式平台和分布式解决方案 主要功能是生产环境的容器编排,包括: 滚动升级 在线扩缩容 资源自动调度 资源配额管理 服务注册、服务发现 负载均衡 故障发现和自我修复 5. 为什么要用k8s 容器逐渐替代宿主机,k8s是业界广泛认可和看好的容器分布式解决方案 […]

我把SpringBoot应用部署到了K8S上,怎么感觉用起来像Docker!

SpringBoot实战电商项目mall(40k+star)地址:github.com/macrozheng/… 摘要 想要把一个复杂的微服务项目部署到K8S上去,首先我们得学会把单个SpringBoot应用部署上去。今天我们来讲下如何把SpringBoot应用部署到K8S上去,和使用Docker Compose部署非常类似,希望对大家有所帮助! 学前准备 学习本文需要有一些K8S基础,对K8S还不了解的朋友可以参考如下的文章。 《K8S太火了!花10分钟玩转它不香么?》 《自从上了K8S,项目更新都不带停机的!》 推送镜像到Docker Hub 之前我们都是自建的镜像仓库,这次我们换种方式,把镜像上传到Docker Hub中去。 首先我们得注册个Docker Hub的账号,Docker Hub地址:hub.docker.com/ 部署应用使用之前的mall-tiny-fabric项目,先修改pom.xml文件,主要是添加Docker Hub的认证信息和修改下镜像前缀,具体内容如下;

  修改完成后使用package命令先把镜像打包到Linux服务器,再使用docker:push命令把镜像推送到Docker Hub中去: 推送成功以后就可以在Docker Hub中看到镜像了。 应用部署 接下来我们将把应用部署到K8S上去,包含SpringBoot应用的部署和MySQL的部署。 部署MySQL 首先添加配置文件mysql-deployment.yaml用于创建Deployment,具体说明参考注释即可;

  通过应用配置文件来创建Deployment;

  运行成功后查询Deployment,发现mysql-deployment已经就绪;

  想要其他Pod可以通过服务名称访问MySQL,需要创建Service,添加配置文件mysql-service.yaml用于创建Service;

  通过应用配置文件来创建Service;

  运行成功后查询Service,发现mysql-service已经暴露在Node的30306端口上了;

  部署完成后需要新建mall数据库,并导入相关表,表地址:github.com/macrozheng/… 这里有个比较简单的方法来导入数据库,通过Navicat创建连接,先配置一个SSH通道; 之后我们就可以像在Linux服务器上访问数据库一样访问Minikube中的数据库了,直接添加Minikube中数据库IP和端口即可。 部署SpringBoot应用 首先添加配置文件mall-tiny-fabric-deployment.yaml用于创建Deployment,这里我们可以通过环境变量来覆盖SpringBoot中的默认配置;

  通过应用配置文件来创建Deployment;

  我们可以通过kubectl logs命令来查看应用的启动日志;

  如果想要从外部访问SpringBoot应用,需要创建Service,添加配置文件mall-tiny-fabric-service.yaml用于创建Service;

  通过应用配置文件来创建Service;

  此时服务已经暴露到了Node的30180端口上了;

  在Linux服务器上,我们可以通过curl命令来访问下项目的Swagger页面,不过只能查看到返回的一串HTML代码。

  外部访问应用 由于使用Minikube安装的K8S Node处于Linux服务器的内网环境,无法直接从外部访问,所以我们需要安装一个Nginx反向代理下才能访问。 首先我们需要安装Nginx,对Nginx不熟悉的朋友直接参考该文章即可:《Nginx的这些妙用,你肯定有不知道的!》 安装完成后添加一个Nginx的配置文件,这里我的配置路径为/mydata/nginx/conf/conf.d/,用于将mall-tiny.macrozheng.com域名的访问代理到K8S中的SpringBoot应用中去,proxy_pass为上面curl使用的路径;

  重启Nginx服务,再修改访问Linux服务器的本机host文件,添加如下记录;

  之后即可直接在本机上访问K8S上的SpringBoot应用了,访问地址:mall-tiny.macrozheng.com/swagger-ui.… 总结 通过把SpringBoot应用部署到K8S上的一顿操作,我们可以发现在K8S上部署和在Docker上部署有很多相似之处。K8S上很多部署用的脚本,直接翻译之前使用Docker Compose的脚本即可,非常类似。如果你之前用过Docker,那么你就可以轻松上手K8S! 项目源码地址 github.com/macrozheng/… 作者:MacroZheng 链接:https://juejin.cn/post/6924462821774196750 […]

fiddler抓苹果手机上app包的方法,解决https连接只抓到Tunnel to的问题

今天需要用fiddler抓iphone上安装的app包,ios 12.3.1 电脑端用的360浏览器,手机端用的safari 具体步骤如下 1、电脑连入wifi,记下电脑端的ip地址备用 2、手机与电脑连入同一个wifi,代理服务器IP填电脑IP,端口8888 3、打开fiddler,菜单栏依次点击Tools -->Options -->HTTPS 按下图操作,完成电脑端证书的安装 4、Tools -->Options -->Connections如下图设置,完成后重启fiddler。 5、iphone手机端用safari浏览器访问 http://192.168.100.66:8888, 点击连接下载证书到手机 6、手机设置 -->通用 -->描述文件与设备管理,安装证书 7、设置 -->通用 --> 关于本机 -->证书信任设置,打开开关 网上文章都没说到iphone需要打开这个开关才能抓到app中的https数据 否则抓包显示Tunnel to,无法获取数据,手机浏览器打开https网址报非私人连接   from:https://blog.csdn.net/dandanben/article/details/102703034

nginx中root和alias的区别

今天使用nginx搭建了一个网站,访问后出现404错误Not found. 上网查了一下原因,是由于nginx的配置不对。因为我是有两个web目录,这两个目录在不同的位置上。而且我不想把两个目录合并在一起,所以就要配置两个location。配置如下:

  上面的配置浏览http://localhost/website/会显示404错误,因为root属性指定的值是要加入到最终路径的,所以访问的位置变成了/var/lib/www/website/。而我不想把访问的URI加入到路径中。所以就需要使用alias属性,其会抛弃URI,直接访问alias指定的位置, 所以最终路径变成/var/lib/www/。(最后需要加斜线)

  @完 参考:http://blog.csdn.net/u011510825/article/details/50531864   from:https://www.cnblogs.com/zhangqunshi/p/6866522.html

解决nohup: 忽略输入并把输出追加到"nohup.out"或者nohup: 忽略输入重定向错误到标准输出端

nohup启动脚本的时候,没有指定输出路径,默认使用当前目录的nohup.out

  from:https://www.cnblogs.com/xuanbjut/p/14371263.html

HTTP错误 大全 403 401 400 404 304 200 550

HTTP 400 – 请求无效 HTTP 401.1 – 未授权:登录失败 HTTP 401.2 – 未授权:服务器配置问题导致登录失败 HTTP 401.3 – ACL 禁止访问资源 HTTP 401.4 – 未授权:授权被筛选器拒绝 HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败 HTTP 403 – 禁止访问 HTTP 403 – 对 Internet 服务管理器 的访问仅限于 Localhost HTTP 403.1 禁止访问:禁止可执行访问 HTTP 403.2 – 禁止访问:禁止读访问 HTTP 403.3 – 禁止访问:禁止写访问 HTTP 403.4 – 禁止访问:要求 SSL HTTP 403.5 – 禁止访问:要求 SSL 128 HTTP 403.6 – 禁止访问:IP 地址被拒绝 HTTP 403.7 – 禁止访问:要求客户证书 HTTP 403.8 – 禁止访问:禁止站点访问 HTTP 403.9 – 禁止访问:连接的用户过多 HTTP 403.10 – 禁止访问:配置无效 HTTP 403.11 – 禁止访问:密码更改 HTTP […]

ASP.NET MVC5 实现基于Quartz.NET任务调度

 工作之余。技术?。记是不可能记住的。 只有写点东西 才能维持得了生活这样子的。好早就像写一篇关于任务调度的文章。终究是太懒了 一、Quartz.NET介绍 Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 官网:http://www.quartz-scheduler.net/ 源码:https://github.com/quartznet/quartznet 二、Quartz.NET用途 一,可以定时发邮件通知。 二 , 电商网站的定时打折活动。(比如规定11月11日 淘宝购买女朋友打八折) 三, 定时对数据更新 或者添加。 四,自己朋友生日。 可以定时发生日祝福。 等等 (我也不一一举例了) 三、Quartz.NET安装 我使用的VS版本是2015的  选择工具  – NuGet包管理 – 管理解决方案的NuGet包   输入 Quartz.NET 安装   还可以通过NuGet控制台 通过安装命令

四、Quartz.NET实现思路 一,继承并实现IJob接口,在Execute 方法中写你要做的事情(切记 ) 二,使用Quartz 中的API 定义好 工作 触发器 以及工厂 三,加入可视化(远程管理)  四,建立配置的通讯。 五,在全局类(Global.asax)Application_Start注册并开启定时任务   五、上代码 其中JobWork 是我的定义的工作文件  里面有你要执行的工作已经对应的触发器(一个工作对应一个触发器) 首先 我写了一个向文本文件中插入文字的方法已经触发器 (注意 必须继承IJob  要做的事情写在 Execute 中)  

我这里设置的是5分钟执行一次。 你也可以让他5秒 5小时执行一次。 关于时间配置 官方一些常用的实例 0 0 12 * * ? 每天12点触发 0 15 10 ? * * 每天10点15分触发 0 15 […]