Skip to content

feat: add DefaultLogger#1648

Merged
hsluoyz merged 3 commits intomasterfrom
copilot/implement-default-logger-again
Jan 3, 2026
Merged

feat: add DefaultLogger#1648
hsluoyz merged 3 commits intomasterfrom
copilot/implement-default-logger-again

Conversation

Copy link
Contributor

Copilot AI commented Jan 3, 2026

Adds a default implementation of the Logger interface with configurable output, event-type filtering, duration tracking, and user callbacks.

Implementation

  • DefaultLogger struct - Implements Logger interface with:

    • SetEventTypes() - Configures which event types to log via LogEntry.IsActive
    • OnBeforeEvent() - Records StartTime and sets IsActive based on configured types
    • OnAfterEvent() - Calculates Duration, writes logs if active, invokes user callback
    • SetLogCallback() - Registers user-provided callback executed after each event
  • SetOutput() - Routes log output to any io.Writer (defaults to os.Stdout)

Usage

var buf bytes.Buffer
logger := log.NewDefaultLogger()
logger.SetOutput(&buf)
logger.SetEventTypes([]log.EventType{log.EventEnforce, log.EventAddPolicy})

// Only EventEnforce and EventAddPolicy events will be logged
entry := &log.LogEntry{EventType: log.EventEnforce, Subject: "alice", ...}
logger.OnBeforeEvent(entry)  // Sets StartTime, IsActive=true
logger.OnAfterEvent(entry)   // Calculates Duration, writes to buf, calls callback

Event filtering uses LogEntry.IsActive - events not in the configured types are marked inactive and skipped. If no event types are configured, all events are active by default.

Original prompt

This section details on the original issue you should resolve

<issue_title>[feature] implement the DefaultLogger by following the Logger interface</issue_title>
<issue_description>implement the DefaultLogger by following the Logger interface

DefaultLogger's constructor should support below way to set output to buffer. it can also support printing to console if buf is not set.

var buf bytes.Buffer
defaultLogger.SetOutput(&buf)

LogEntry.IsActive can be used to filter not useful events (SetEventTypes)

OnBeforeEvent will set entry.StartTime, then in OnAfterEvent(), Duration can be calculated.

SetLogCallback can set user-provided function as callback for the log.

user-provided function callback will be called at the end of OnAfterEvent.

no Go test is needed to add

new go file's apache header is year 2026</issue_description>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@hsluoyz hsluoyz marked this pull request as ready for review January 3, 2026 14:23
Copilot AI and others added 2 commits January 3, 2026 14:26
- Created default_logger.go with DefaultLogger struct
- Implemented all Logger interface methods (SetEventTypes, OnBeforeEvent, OnAfterEvent, SetLogCallback)
- Added SetOutput method to support buffer/console output
- Set StartTime in OnBeforeEvent and calculate Duration in OnAfterEvent
- Filter events using LogEntry.IsActive based on SetEventTypes
- Call user callback at end of OnAfterEvent if set
- Use 2026 copyright header as requested

Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
Use strings.TrimSuffix instead of direct string slicing to safely remove newline when adding error message

Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
@github-actions
Copy link

github-actions bot commented Jan 3, 2026

Benchmark Comparison

Comparing base branch (6b688f0)
vs PR branch (9f52da7)

goos: linux
goarch: amd64
pkg: github.com/casbin/casbin/v3
cpu: AMD EPYC 7763 64-Core Processor                
                                                 │ base-bench.txt │             pr-bench.txt             │
                                                 │     sec/op     │    sec/op     vs base                │
CachedRaw-4                                          17.53n ± ∞ ¹   17.74n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedBasicModel-4                                   175.1n ± ∞ ¹   176.3n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModel-4                                    176.2n ± ∞ ¹   183.3n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelSmall-4                               186.2n ± ∞ ¹   186.0n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMedium-4                              200.0n ± ∞ ¹   186.3n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelLarge-4                               159.2n ± ∞ ¹   159.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithResourceRoles-4                   178.5n ± ∞ ¹   180.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDomains-4                         188.8n ± ∞ ¹   190.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedABACModel-4                                    2.964µ ± ∞ ¹   3.070µ ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedKeyMatchModel-4                                198.2n ± ∞ ¹   200.0n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDeny-4                            177.3n ± ∞ ¹   177.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedPriorityModel-4                                182.7n ± ∞ ¹   187.0n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedWithEnforceContext-4                           303.8n ± ∞ ¹   309.7n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMediumParallel-4                      180.2n ± ∞ ¹   183.7n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicySmall-4                                     553.0n ± ∞ ¹   574.0n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyMedium-4                                    592.3n ± ∞ ¹   579.4n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyLarge-4                                     610.8n ± ∞ ¹   579.0n ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicySmall-4                                     561.6n ± ∞ ¹   552.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyMedium-4                                    680.9n ± ∞ ¹   737.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyLarge-4                                     1.279µ ± ∞ ¹   1.248µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicySmall-4                                  549.2n ± ∞ ¹   552.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyMedium-4                                 587.7n ± ∞ ¹   588.9n ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyLarge-4                                  633.2n ± ∞ ¹   625.4n ± ∞ ¹       ~ (p=1.000 n=1) ²
Raw-4                                                17.66n ± ∞ ¹   17.57n ± ∞ ¹       ~ (p=1.000 n=1) ²
BasicModel-4                                         3.649µ ± ∞ ¹   3.782µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModel-4                                          5.509µ ± ∞ ¹   5.701µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/small-4                               50.70µ ± ∞ ¹   49.15µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/medium-4                              523.4µ ± ∞ ¹   546.0µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/large-4                               5.584m ± ∞ ¹   5.820m ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSmall-4                                     61.65µ ± ∞ ¹   61.25µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelMedium-4                                    583.7µ ± ∞ ¹   592.2µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelLarge-4                                     5.933m ± ∞ ¹   6.151m ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithResourceRoles-4                         5.554µ ± ∞ ¹   5.580µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomains-4                               5.258µ ± ∞ ¹   5.400µ ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACModel-4                                          2.895µ ± ∞ ¹   2.893µ ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACRuleModel-4                                      4.456m ± ∞ ¹   4.471m ± ∞ ¹       ~ (p=1.000 n=1) ²
KeyMatchModel-4                                      6.363µ ± ∞ ¹   6.410µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDeny-4                                  7.036µ ± ∞ ¹   7.173µ ± ∞ ¹       ~ (p=1.000 n=1) ²
PriorityModel-4                                      4.346µ ± ∞ ¹   4.390µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomainPatternLarge-4                    14.21µ ± ∞ ¹   15.08µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerSmall-4                                   69.64µ ± ∞ ¹   69.98µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerMedium-4                                  738.0µ ± ∞ ¹   734.4µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerLarge-4                                   9.052m ± ∞ ¹   9.755m ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithPatternLarge-4                     341.6m ± ∞ ¹   348.0m ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithDomainPatternLarge-4               12.23m ± ∞ ¹   12.45m ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithPatternAndDomainPatternLarge-4     350.0m ± ∞ ¹   362.6m ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternLarge-4                            1.111µ ± ∞ ¹   1.132µ ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithDomainPatternLarge-4                      475.8n ± ∞ ¹   476.9n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternAndDomainPatternLarge-4            1.106µ ± ∞ ¹   1.107µ ± ∞ ¹       ~ (p=1.000 n=1) ²
ConcurrentHasLinkWithMatching-4                      2.060µ ± ∞ ¹   2.047µ ± ∞ ¹       ~ (p=1.000 n=1) ²
geomean                                              5.581µ         5.645µ        +1.15%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05

                                                 │ base-bench.txt │             pr-bench.txt              │
                                                 │      B/op      │     B/op       vs base                │
CachedRaw-4                                           0.000 ± ∞ ¹     0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedBasicModel-4                                    104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModel-4                                     104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelSmall-4                                104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMedium-4                               104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelLarge-4                                96.00 ± ∞ ¹     96.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithResourceRoles-4                    104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDomains-4                          120.0 ± ∞ ¹     120.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedABACModel-4                                   1.511Ki ± ∞ ¹   1.506Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
CachedKeyMatchModel-4                                 152.0 ± ∞ ¹     152.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDeny-4                             104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedPriorityModel-4                                 104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedWithEnforceContext-4                            240.0 ± ∞ ¹     240.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMediumParallel-4                       105.0 ± ∞ ¹     105.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicySmall-4                                      150.0 ± ∞ ¹     150.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyMedium-4                                     157.0 ± ∞ ¹     157.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyLarge-4                                      165.0 ± ∞ ¹     165.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicySmall-4                                      152.0 ± ∞ ¹     152.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyMedium-4                                     170.0 ± ∞ ¹     170.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyLarge-4                                      458.0 ± ∞ ¹     473.0 ± ∞ ¹       ~ (p=1.000 n=1) ³
RemovePolicySmall-4                                   166.0 ± ∞ ¹     166.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyMedium-4                                  174.0 ± ∞ ¹     174.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyLarge-4                                   181.0 ± ∞ ¹     181.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
Raw-4                                                 0.000 ± ∞ ¹     0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
BasicModel-4                                        1.476Ki ± ∞ ¹   1.477Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModel-4                                         2.022Ki ± ∞ ¹   2.021Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSizes/small-4                              19.82Ki ± ∞ ¹   19.67Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSizes/medium-4                             187.3Ki ± ∞ ¹   187.2Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSizes/large-4                              1.810Mi ± ∞ ¹   1.814Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSmall-4                                    19.90Ki ± ∞ ¹   19.88Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelMedium-4                                   190.1Ki ± ∞ ¹   190.3Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelLarge-4                                    1.843Mi ± ∞ ¹   1.844Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithResourceRoles-4                        2.679Ki ± ∞ ¹   2.676Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithDomains-4                              1.789Ki ± ∞ ¹   1.789Ki ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACModel-4                                         1.503Ki ± ∞ ¹   1.502Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
ABACRuleModel-4                                     1.266Mi ± ∞ ¹   1.266Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
KeyMatchModel-4                                     3.001Ki ± ∞ ¹   3.001Ki ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDeny-4                                 2.430Ki ± ∞ ¹   2.430Ki ± ∞ ¹       ~ (p=1.000 n=1) ²
PriorityModel-4                                     1.727Ki ± ∞ ¹   1.726Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithDomainPatternLarge-4                   8.492Ki ± ∞ ¹   8.492Ki ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerSmall-4                                  11.67Ki ± ∞ ¹   11.67Ki ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerMedium-4                                 123.0Ki ± ∞ ¹   123.0Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RoleManagerLarge-4                                  1.287Mi ± ∞ ¹   1.287Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithPatternLarge-4                    86.00Mi ± ∞ ¹   86.01Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithDomainPatternLarge-4              4.487Mi ± ∞ ¹   4.487Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithPatternAndDomainPatternLarge-4    87.64Mi ± ∞ ¹   87.60Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
HasLinkWithPatternLarge-4                             177.0 ± ∞ ¹     177.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithDomainPatternLarge-4                       80.00 ± ∞ ¹     80.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternAndDomainPatternLarge-4             177.0 ± ∞ ¹     177.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
ConcurrentHasLinkWithMatching-4                       622.0 ± ∞ ¹     622.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
geomean                                                         ⁴                  +0.04%               ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
⁴ summaries must be >0 to compute geomean

                                                 │ base-bench.txt │             pr-bench.txt             │
                                                 │   allocs/op    │  allocs/op    vs base                │
CachedRaw-4                                           0.000 ± ∞ ¹    0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedBasicModel-4                                    4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModel-4                                     4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelSmall-4                                4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMedium-4                               4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelLarge-4                                3.000 ± ∞ ¹    3.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithResourceRoles-4                    4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDomains-4                          4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedABACModel-4                                     18.00 ± ∞ ¹    18.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedKeyMatchModel-4                                 4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDeny-4                             4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedPriorityModel-4                                 4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedWithEnforceContext-4                            5.000 ± ∞ ¹    5.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMediumParallel-4                       4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicySmall-4                                      6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyMedium-4                                     6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyLarge-4                                      7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicySmall-4                                      6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyMedium-4                                     7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyLarge-4                                      9.000 ± ∞ ¹    9.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicySmall-4                                   7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyMedium-4                                  7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyLarge-4                                   8.000 ± ∞ ¹    8.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
Raw-4                                                 0.000 ± ∞ ¹    0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
BasicModel-4                                          17.00 ± ∞ ¹    17.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModel-4                                           35.00 ± ∞ ¹    35.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/small-4                                480.0 ± ∞ ¹    480.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/medium-4                              4.829k ± ∞ ¹   4.829k ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/large-4                               48.11k ± ∞ ¹   48.25k ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSmall-4                                      615.0 ± ∞ ¹    615.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelMedium-4                                    6.018k ± ∞ ¹   6.018k ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelLarge-4                                     60.30k ± ∞ ¹   60.33k ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithResourceRoles-4                          28.00 ± ∞ ¹    28.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomains-4                                25.00 ± ∞ ¹    25.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACModel-4                                           17.00 ± ∞ ¹    17.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACRuleModel-4                                      40.09k ± ∞ ¹   40.09k ± ∞ ¹       ~ (p=1.000 n=1) ²
KeyMatchModel-4                                       37.00 ± ∞ ¹    37.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDeny-4                                   49.00 ± ∞ ¹    49.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
PriorityModel-4                                       22.00 ± ∞ ¹    22.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomainPatternLarge-4                     72.00 ± ∞ ¹    72.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerSmall-4                                    797.0 ± ∞ ¹    797.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerMedium-4                                  8.741k ± ∞ ¹   8.741k ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerLarge-4                                   89.74k ± ∞ ¹   89.74k ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithPatternLarge-4                     3.600M ± ∞ ¹   3.600M ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithDomainPatternLarge-4               145.2k ± ∞ ¹   145.2k ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithPatternAndDomainPatternLarge-4     3.679M ± ∞ ¹   3.679M ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternLarge-4                             13.00 ± ∞ ¹    13.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithDomainPatternLarge-4                       5.000 ± ∞ ¹    5.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternAndDomainPatternLarge-4             13.00 ± ∞ ¹    13.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
ConcurrentHasLinkWithMatching-4                       21.00 ± ∞ ¹    21.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
geomean                                                         ⁴                 +0.01%               ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
⁴ summaries must be >0 to compute geomean

🤖 This comment will be automatically updated with the latest benchmark results.

Copilot AI changed the title [WIP] Implement DefaultLogger following Logger interface Implement DefaultLogger with event filtering and callback support Jan 3, 2026
Copilot AI requested a review from hsluoyz January 3, 2026 14:32
@hsluoyz hsluoyz changed the title Implement DefaultLogger with event filtering and callback support feat: add DefaultLogger Jan 3, 2026
@hsluoyz hsluoyz merged commit 96dbbd8 into master Jan 3, 2026
5 of 7 checks passed
hsluoyz added a commit that referenced this pull request Jan 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] implement the DefaultLogger by following the Logger interface

3 participants