Mvc+jquery EasyUI+三层 后台管理系统(三)

主页UI编写

老规矩,底部有源码。接着奏,接着舞

<div data-options="region:'north',border:false" style="height: 60px; background-color: #F5F5F5; padding: 10px; font-size: x-large;">
        <img src="~/Content/images/Logo.png" /> 后台管理系统
        <div style="position: absolute; right: 5px; top: 10px;">
            欢迎您:<span style="color: #0082ff; ">@ViewBag.RealName</span>  @ViewBag.TimeView   @ViewBag.DayDate
        </div>
        <div style="position: absolute; right: 0px; bottom: 0px; ">
            <a href="javascript:void(0);" class="easyui-linkbutton" data-options="plain:true,iconCls:'icon-set1'" onclick="changePwd('');">
                修改密码
            </a>
            <a href="javascript:void(0);" class="easyui-linkbutton" data-options="plain:true,iconCls:'icon-stop'" onclick="loginOut();">
                退出系统
            </a>
        </div>
    </div>

    <div data-options="region:'west',split:true,title:'功能导航'" style="width: 180px; background-color: white;">
        <div id="RightAccordion" class="easyui-accordion">
        </div>
    </div>
    <div data-options="region:'center'">
        <div id="tabs" class="easyui-tabs" fit="true" border="false" >
            <div id="home" title="我的主页" data-options="iconCls:'icon-house',closable:false" style="padding:10px">
                欢迎来到后台管理系统。
            </div>
        </div>
    </div>

效果:
效果

配置日志(Log4net)

博主之前贴过log4net配置demo,这里温故而知新,再贴一次:
1.nueget安装Log4net.dll:
pm命令:Install-Package Newtonsoft.Json -Version 12.0.3
获取log4net
2.配置webconfig:

 <log4net>
    <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
    <!-- Set root logger level to ERROR and its appenders -->
    <root>
      <!--root 就相当于默认的日志对象配置,而logger是指定特定的日志配置。他们可以共存-->
      <level value="ALL" />
      <!--允许所有的日志级别输出-->
      <appender-ref ref="SysAppender" />
    </root>
    <!-- Print only messages of level DEBUG or above in the packages -->
    <logger name="WebLogger">
      <!--日志类的名字-->
      <level value="DEBUG" />
      <!--定义记录的日志级别:调试级别-->
    </logger>
    <!--错误日志附加介质-->
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="log4net/" />
      <!--日志输出到exe程序这个相对目录下-->
      <param name="AppendToFile" value="true" />
      <!--输出的日志不会覆盖以前的信息-->
      <param name="RollingStyle" value="Date" />
      <!--文件创建的方式,这里是以Date方式创建-->
      <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
      <!--日志文件名-->
      <param name="StaticLogFileName" value="false" />
      <!--是否使用静态文件名-->
      <!--错误日志布局-->
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%m" />
        <!--%m: 直接输出-->
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
      </layout>
    </appender>
    <!--信息日志附加介质-->
    <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%m" />
        <!--输出到控制台-->
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
      </layout>
    </appender>
  </log4net>

3.添加日志消息类:

 /// <summary>
    /// 日志消息
    /// </summary>
    public class LogMessage
    {
        /// <summary>
        /// 操作时间
        /// </summary>
        public DateTime OperationTime { get; set; }
        /// <summary>
        /// Url地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 类名
        /// </summary>
        public string Class { get; set; }
        /// <summary>
        /// IP
        /// </summary>
        public string Ip { get; set; }
        /// <summary>
        /// 主机
        /// </summary>
        public string Host { get; set; }
        /// <summary>
        /// 浏览器
        /// </summary>
        public string Browser { get; set; }
        /// <summary>
        /// 操作人
        /// </summary>
        public string UserName { get; set; }
        /// <summary>
        /// 内容
        /// </summary>
        public string Content { get; set; }

        /// <summary>
        /// 异常信息
        /// </summary>
        public string ExceptionInfo { get; set; }
        /// <summary>
        /// 异常来源
        /// </summary>
        public string ExceptionSource { get; set; }
        /// <summary>
        /// 异常信息备注
        /// </summary>
        public string ExceptionRemark { get; set; }
    }

4.编写 自定义输出日志格式辅助类:

/// <summary>
    /// 日志格式器
    /// </summary>
    public class LogFormat
    {
        /// <summary>
        /// 生成错误
        /// </summary>
        /// <param name="logMessage">对象</param>
        /// <returns></returns>
        public string ErrorFormat(LogMessage logMessage)
        {
            StringBuilder strInfo = new StringBuilder();
            strInfo.Append("1. 错误: >> 操作时间: " + logMessage.OperationTime + "   操作人: " + logMessage.UserName + " \r\n");
            strInfo.Append("2. 地址: " + logMessage.Url + "    \r\n");
            strInfo.Append("3. 类名: " + logMessage.Class + " \r\n");
            strInfo.Append("4. Ip  : " + logMessage.Ip + "   主机: " + logMessage.Host + "   浏览器: " + logMessage.Browser + "    \r\n");
            strInfo.Append("5. 内容: " + logMessage.Content + "\r\n");
            strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n");
            return strInfo.ToString();
        }       
    }

5.Global.asax注册log4net:

            log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/Web.config")));

6.编写过滤器:

  public class HandlerErrorAttribute : HandleErrorAttribute
    {
        /// <summary>
        /// 控制器方法中出现异常,会调用该方法捕获异常
        /// </summary>
        /// <param name="context">提供使用</param>
        public override void OnException(ExceptionContext context)
        {            
            WriteLog(context);
            base.OnException(context);
            context.ExceptionHandled = true;
            context.HttpContext.Response.StatusCode = 500;
            context.Result = new ContentResult { Content = new Result { type = false, msg = context.Exception.Message }.ToJson() };

        }
        /// <summary>
        /// 写入日志(log4net)
        /// </summary>
        private void WriteLog(ExceptionContext context)
        {
            if (context == null)
                return;
            Exception Error = context.Exception;
            LogMessage logMessage = new LogMessage();
            logMessage.OperationTime = DateTime.Now;
            logMessage.Url = HttpContext.Current.Request.RawUrl;
            logMessage.Class = context.Controller.ToString();
            logMessage.Ip = Net.Ip;
            logMessage.Host = Net.Host;
            logMessage.Browser = Net.Browser;
            string s_accountId = AES.DecryptStr(CookiesHelper.GetCookieValue("UserID"));
            int i_accountId = 0;
            //判断是否有cookie
            if (int.TryParse(s_accountId, out i_accountId))
            {
                EasyManageEntity.UserEntity m_account = new EasyManageBLL.UserBLL().GetUserById(i_accountId.ToString());
                if (m_account != null)
                {
                    logMessage.UserName = m_account.AccountName + "(" + m_account.RealName + ")";                   
                }
                else
                {
                    CookiesHelper.AddCookie("UserID", System.DateTime.Now.AddDays(-1));
                }
            }
            else
            {
                logMessage.UserName = "Error";
            }
            if (Error.InnerException == null)
            {
                logMessage.ExceptionInfo = Error.Message;
            }
            else
            {
                logMessage.ExceptionInfo = Error.InnerException.Message;
            }
            string strMessage = new LogFormat().ExceptionFormat(logMessage);
            Log4NetHelp.Error(strMessage);

        }
    }

在FilterConfig中注册过滤器以后,控制器方法出现问题即可会生成日志文件:
在这里插入图片描述
在这里插入图片描述

大功告成,之前编写的登录验证过滤器有点问题,后续会修正。

源代码 提取码9khw

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值