/// <summary>
        /// 사용자 Login 이력을 DB에 기록합니다. (Sessionless를 사용하므로 함수명이 Insert 로 시작합니다)
        /// </summary>
        /// <param name="productCode">제품 코드</param>
        /// <param name="companyCode">사용자 소속 회사 코드</param>
        /// <param name="loginId">로그인 Id</param>
        /// <param name="localeKey">로그인 사용자의 Locale 정보</param>
        /// <param name="loginTime">로그인 시각</param>
        public void InsertUserLoginLog(string productCode, string companyCode, string loginId, string localeKey = null, DateTime? loginTime = null)
        {
            var loginLog = new UserLoginLog(productCode, companyCode, loginId, localeKey, loginTime);

            if(log.IsDebugEnabled)
                log.Debug(@"사용자 로그인 이력 정보를 생성합니다... " + loginLog);

            // NOTE : Log 정보를 기록할 때에는 Session에 저장할 필요없고, 성능을 위해서 StatelessSession를 사용합니다.
            //
            loginLog.InsertStateless(Session);
        }
        /// <summary>
        /// 사용자 Login 이력을 DB에 기록합니다. (Sessionless를 사용하므로 함수명이 Insert 로 시작합니다)
        /// </summary>
        /// <param name="product">로그인한 제품 정보</param>
        /// <param name="user">로그인 사용자</param>
        /// <param name="department">로그인 사용자의 부서</param>
        /// <param name="localeKey">로그인 사용자의 Locale 정보</param>
        /// <param name="loginTime">로그인 시각</param>
        /// <param name="exAttr">확장 속성 정보</param>
        public void InsertUserLoginLog(Product product, User user, Department department = null, string localeKey = null, DateTime? loginTime = null, string exAttr = null)
        {
            product.ShouldNotBeNull("product");
            user.ShouldNotBeNull("user");

            var loginLog = new UserLoginLog(product.Code, user.Company.Code, user.LoginId, localeKey, loginTime)
                           {
                               ProductName = product.Name,
                               CompanyName = user.Company.Name,
                               DepartmentCode = (department != null) ? department.Code : null,
                               DepartmentName = (department != null) ? department.Name : null,
                               UserCode = user.Code,
                               UserName = user.Name,
                               ExAttr = exAttr
                           };

            if(log.IsDebugEnabled)
                log.Debug(@"사용자 로그인 이력 정보를 생성합니다... " + loginLog);

            // NOTE : Log 정보를 기록할 때에는 Session에 저장할 필요없고, 성능을 위해서 StatelessSession를 사용합니다.
            //
            loginLog.InsertStateless(Session);
        }