{"id":19992885,"url":"https://github.com/cosmos-loops/cosmos-logging","last_synced_at":"2025-10-11T22:36:58.241Z","repository":{"id":48219699,"uuid":"81101495","full_name":"cosmos-loops/cosmos-logging","owner":"cosmos-loops","description":"Logging component for .NET Core with nice APIs for developers to use.","archived":false,"fork":false,"pushed_at":"2022-07-07T23:25:25.000Z","size":4035,"stargazers_count":29,"open_issues_count":12,"forks_count":9,"subscribers_count":4,"default_branch":"dev","last_synced_at":"2024-04-30T08:41:38.495Z","etag":null,"topics":["cosmos","cosmos-logging","cosmos-loops","hacktoberfest","logger-interface","logging","structured-logging"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cosmos-loops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-06T15:29:32.000Z","updated_at":"2023-07-07T02:20:43.000Z","dependencies_parsed_at":"2022-08-25T19:31:30.862Z","dependency_job_id":null,"html_url":"https://github.com/cosmos-loops/cosmos-logging","commit_stats":null,"previous_names":["cosmos-loops/logging"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmos-loops%2Fcosmos-logging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmos-loops%2Fcosmos-logging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmos-loops%2Fcosmos-logging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmos-loops%2Fcosmos-logging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cosmos-loops","download_url":"https://codeload.github.com/cosmos-loops/cosmos-logging/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227514940,"owners_count":17782641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cosmos","cosmos-logging","cosmos-loops","hacktoberfest","logger-interface","logging","structured-logging"],"created_at":"2024-11-13T04:52:21.941Z","updated_at":"2025-10-11T22:36:53.212Z","avatar_url":"https://github.com/cosmos-loops.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"# COSMOSLOOPS/Cosmos.Logging\n\nLogging component for .NET Core with nice APIs for developers to use. Cosmos.Logging is support for structured logging message in several kinds of .NET applications.\n\nThis repository belongs to [Cosmosloops Labs.](https://github.com/cosmos-loops/).\n\n## Nuget Packages\n\n+ [Cosmos.Logging](https://www.nuget.org/packages/Cosmos.Logging/)\n+  RunsOn Extensions\n    + [Cosmos.Logging.RunsOn.AspNet](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.AspNet/) \n    + [Cosmos.Logging.RunsOn.AspNet.WithAutofac](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.AspNet.WithAutofac/) \n    + [Cosmos.Logging.RunsOn.AspNetCore](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.AspNetCore/) \n    + [Cosmos.Logging.RunsOn.Console](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.Console/) \n    + [Cosmos.Logging.RunsOn.NancyFX](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.NancyFX/) \n    + [Cosmos.Logging.RunsOn.NancyFX.WithAutofac](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.NancyFX.WithAutofac/) \n    + [Cosmos.Logging.RunsOn.ZkWeb](https://www.nuget.org/packages/Cosmos.Logging.RunsOn.ZkWeb/)\n+ Common Extensions\n    + [Cosmos.Logging.Extensions.Microsoft](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Microsoft/)\n    + [Cosmos.Logging.Extensions.NodaTime](https://www.nuget.org/packages/Cosmos.Logging.Extensions.NodaTime/)\n+ Data provider and ORM Extensions / Enrichers\n    + [Cosmos.Logging.Extensions.EntityFramework](https://www.nuget.org/packages/Cosmos.Logging.Extensions.EntityFramework/)\n    + [Cosmos.Logging.Extensions.EntityFrameworkCore](https://www.nuget.org/packages/Cosmos.Logging.Extensions.EntityFrameworkCore/)\n    + [Cosmos.Logging.Extensions.NHibernate](https://www.nuget.org/packages/Cosmos.Logging.Extensions.NHibernate/)\n    + [Cosmos.Logging.Extensions.FreeSql](https://www.nuget.org/packages/Cosmos.Logging.Extensions.FreeSql/)\n    + [Cosmos.Logging.Extensions.SqlSugar](https://www.nuget.org/packages/Cosmos.Logging.Extensions.SqlSugar/) \n    + [Cosmos.Logging.Extensions.PostgreSql](https://www.nuget.org/packages/Cosmos.Logging.Extensions.PostgreSql/)\n+ Exception Extensions / Enrichers\n    + [Cosmos.Logging.Extensions.Exceptions](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions/)\n    + [Cosmos.Logging.Extensions.Exceptions.EntityFramework](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.EntityFramework/)\n    + [Cosmos.Logging.Extensions.Exceptions.EntityFrameworkCore](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.EntityFrameworkCore/)\n    + [Cosmos.Logging.Extensions.Exceptions.MySql](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.MySql/)\n    + [Cosmos.Logging.Extensions.Exceptions.MySqlConnector](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.MySqlConnector/)\n    + [Cosmos.Logging.Extensions.Exceptions.Oracle](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.Oracle/)\n    + [Cosmos.Logging.Extensions.Exceptions.PostgreSql](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.PostgreSql/)\n    + [Cosmos.Logging.Extensions.Exceptions.Sqlite](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.Sqlite/)\n    + [Cosmos.Logging.Extensions.Exceptions.SqlServer](https://www.nuget.org/packages/Cosmos.Logging.Extensions.Exceptions.SqlServer/)\n+ Payload Clients / Sinks\n    + [Cosmos.Logging.Sinks.File](https://www.nuget.org/packages/Cosmos.Logging.Sinks.File/)\n    + [Cosmos.Logging.Sinks.Console](https://www.nuget.org/packages/Cosmos.Logging.Sinks.Console/)\n    + [Cosmos.Logging.Sinks.NLog](https://www.nuget.org/packages/Cosmos.Logging.Sinks.NLog/) \n    + [Cosmos.Logging.Sinks.Exceptionless](https://www.nuget.org/packages/Cosmos.Logging.Sinks.Exceptionless/)\n    + [Cosmos.Logging.Sinks.AliyunSls](https://www.nuget.org/packages/Cosmos.Logging.Sinks.AliyunSls/)\n    + [Cosmos.Logging.Sinks.JdCloud](https://www.nuget.org/packages/Cosmos.Logging.Sinks.JdCloud/)\n    + [Cosmos.Logging.Sinks.TencentCloudCls](https://www.nuget.org/packages/Cosmos.Logging.Sinks.TencentCloudCls/)\n    + [Cosmos.Logging.Sinks.Log4Net](https://www.nuget.org/packages/Cosmos.Logging.Sinks.Log4Net/)\n    + [Cosmos.Logging.Sinks.TomatoLog](https://www.nuget.org/packages/Cosmos.Logging.Sinks.TomatoLog/)\n+ Renderers\n    + [Cosmos.Logging.Renderers.Environment](https://www.nuget.org/packages/Cosmos.Logging.Renderers.Environment/)\n    + [Cosmos.Logging.Renderers.Process](https://www.nuget.org/packages/Cosmos.Logging.Renderers.Process/)\n\n## Usage\n\n### Install the package\n\n```\nInstall-Package Cosmos.Logging\n```\n\nInstall the specific sink packages, renderer packages or extension packages that you need.\n\n\n### Work in console\n\nInstall console package first:\n\n```\nInstall-Package Cosmos.Logging.RunsOn.Console\n```\n\nthen: (in this case we integrated NLog sink)\n\n```c#\nstatic void Main(string[] args)\n{\n    //load configuration info\n    var root = new ConfigurationBuilder()\n        .SetBasePath(Directory.GetCurrentDirectory())\n        .AddJsonFile(\"appsettings.json\", true, true)\n        .Build();\n\n    //initialize logger\n    LOGGER.Initialize(root).RunsOnConsole().AddNLog().AddSampleLog().AllDone();\n\n    //submit log manually\n    var logger1 = LOGGER.GetLogger\u003cProgram\u003e(mode: LogEventSendMode.Manually);\n    logger1.LogWarning(\"hello， {$Date} {$MachineName}\");\n    logger1.SubmitLogger();\n\n    //or submit log automatically\n    var logger2 = LOGGER.GetLogger\u003cProgram\u003e();\n    logger2.LogWarning(\"world\");\n\n    //get a future logger\n    var logger3 = LOGGER.GetLogger\u003cProgram\u003e().ToFuture();\n\n    //or convert a normal to future logger\n    var logger4 = logger2.ToFuture();\n\n    //or get a future logger directly\n    var logger5 = FUTURE.GetFutureLogger\u003cProgram\u003e();\n\n    //and how to use future logger via a nice fluent api\n    logger5.SetLevel(LogEventLevel.Warning)\n        .SetMessage(\"future log===\u003e Nice {@L}\")\n        .SetTags(\"Alex\", \"Lewis\")\n        .SetParameter(new {L = \"KK2\"})\n        .SetException(new ArgumentNullException(nameof(args)))\n        .Submit();\n\n    //or you can use a optional-parameters-style api in your Application-Framework\n    logger5.UseFields(\n        Fields.Level(LogEventLevel.Warning),\n        Fields.Message(\"future log===\u003e Nice {@L}\"),\n        Fields.Tags(\"Alex\", \"Lewis\"),\n        Fields.Args(new {L = \"KK3\"}),\n        Fields.Exception(new ArgumentNullException(nameof(args)))).Submit();\n}\n```\n\n### Work with Microsoft ASP.NET Core Mvc\n\nInstall aspnetcore package first:\n\n```c#\nInstall-Package Cosmos.Logging.RunsOn.AspNetCore\n```\n\nthen write code in `Startup.cs`: (in this case, we integrated SqlSugar ORM)\n\n```c#\npublic void ConfigureServices(IServiceCollection services)\n{\n    //...\n\n    services.AddCosmosLogging(Configuration, config =\u003e config\n            .ToGlobal(o =\u003e o.UseMinimumLevel(LogEventLevel.Information))\n            .AddDatabaseIntegration(o =\u003e o.UseSqlSugar(sugar =\u003e sugar.UseAlias(\"Everything\", LogEventLevel.Verbose)))\n            .AddSampleLog());\n\n    //...\n}\n```\n\nfinally, just to writing your code:\n\n```c#\npublic class HomeController : Controller\n{\n    private readonly ILoggingServiceProvider _loggingProvider;\n\n    public HomeController(ILoggingServiceProvider loggingProvider) {\n        _loggingProvider = loggingProvider ?? throw new ArgumentNullException(nameof(loggingProvider));\n    }\n\n    // GET\n    public IActionResult Index() {\n        var log = _loggingProvider.GetLogger\u003cHomeController\u003e();\n        log.LogInformation(\"Nice @ {$Date}\");\n        return Content(\"Nice\");\n    }\n}\n\n```\n\n### Work with Microsoft ASP.NET Mvc\n\nInstall aspnet package first:\n\n```\nInstall-Package Cosmos.Logging.RunsOn.AspNet\n```\n\nor (if you use Autofac as your default IoC container)\n\n```\nInstall-Package Cosmos.Logging.RunsOn.AspNet.WithAutofac\n```\n\nthen\n\n```c#\n//in Global.asax.cs\npublic class Global : HttpApplication\n{\n    //...\n    this.RegisterCosmosLogging(s =\u003e s.ToGlobal(c =\u003e c.UseMinimumLevel(LogEventLevel.Verbose)).AddSampleLog());\n}\n\n```\n\n## Thanks\n\nPeople or projects that have made a great contribution to this project:\n\n+ *Mr.* [刘浩杨](https://github.com/liuhaoyang)\n+ *Mr.* [何镇汐](https://github.com/UtilCore)\n- _The next one must be you_\n\n### Organizations and projects\n\n+ *Project* [AsyncQueue](https://github.com/Sunlighter/AsyncQueues), Apache License 2.0\n- _The next one must be yours_\n\n---\n\n## License\n\nMember project of [Cosmosloops Labs.](https://github.com/cosmos-loops).\n\n[Apache License 2.0](/LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosmos-loops%2Fcosmos-logging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcosmos-loops%2Fcosmos-logging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosmos-loops%2Fcosmos-logging/lists"}